Предположим, вы делаете BFS/DFS на 2-й сетке. В этом случае вам нужно отметить ранее посещенные позиции. Вы можете использовать 2d массив логических. Но когда у вас будет много дел, вы должны их очистить много раз. Любая лучшая идея использования флага 2d?Использование 2d массива флагов эффективно
0
A
ответ
0
Самый эффективный способ, которым я нашел, - это взять 2d массив целых чисел. Сначала мы будем устанавливать все точки в 0. Тогда в каждом случае мы сделаем текущий посетитель [] [] равным номеру случая. Если номер дела равен текущему номеру, то он посещается. иначе он не будет посещен. Psudocode здесь:
int visited[max][max]//declare it as a global array so that it will initially 0
int case=current case number//suppose 1. We will increase it in each test.
check if visited[i][j]==case
YES: continue //this point is visited before
NO : visited[i][j]=case and do next steps here.//not visited.
Я хотел бы, чтобы лучше видеть ideas.They поможет me.thanks.
Смежные вопросы
- 1. Использование 2D-массива в уравнении
- 2. Использование массива 2d в классе
- 3. Использование searchsorted для 2D-массива
- 4. Использование флагов Getopt :: Long
- 5. Какая структура данных для массива битовых флагов?
- 6. Использование парфора эффективно
- 7. Размеры 2D 2D-массива
- 8. Транспонирование 2D-массива
- 9. Использование MPI Scatter для 2d-массива
- 10. Использование EventHandler для увеличения значений 2D-массива
- 11. Использование 2D-массива в функции: Ошибка
- 12. Использование 1D массива байтов в 2D-режиме
- 13. Использование Bundle для отправки 2D массива строк
- 14. Графическое использование с использованием 2D-массива
- 15. Redux: Использование оператора спреда для 2D-массива
- 16. Передача массива 2d и использование ошибки рекурсии
- 17. Delphi Использование 2d-массива, определенного статическим массивом
- 18. Java: использование процентов для заполнения 2D-массива?
- 19. Повторное использование 2D-массива в VBA Excel?
- 20. Использование mmap для выделения двумерного 2D-массива
- 21. Использование класса enum для определения флагов
- 22. Поиск 2D-массива внутри большего 2D-массива
- 23. использование флагов в Баше скрипте
- 24. Использование флагов configure в Makefile
- 25. Использование поиска в списках для поиска 2d-массива (python)
- 26. Использование 2d массива против массива производного типа в Fortran 90
- 27. Использование массива строк для создания массива 2D (map) в Java
- 28. Заполнение ввода 2D 2D-массива
- 29. Сортировка массива структур Эффективно
- 30. Горизонтальное преобразование массива (2D)
Этот подход ломается, когда вы повторяете достаточное количество раз, чтобы получить переполнение номера. –
Заполнение линейной памяти - это быстрая операция, используйте memset после каждой операции, также вы можете использовать битовые поля для хранения данных в компактной форме для экономии памяти, если у вас много записей. –
Не могу понять. Можете ли вы объяснить, когда он ломается? @Valeri Atamaniouk – madMDT