Я задал аналогичный вопрос несколько дней назад, но мне еще предстоит найти эффективный способ решения моей проблемы. Я разрабатываю простую консольную игру, и у меня есть 2D-массив вроде этого:
1,0,0,0,1
1,1,0,1,1
0,1,0,0,1
1,1,1,1,0
0,0,0,1,0
Я пытаюсь найти все области, которые состоят из соседних 1 (4-сторонняя связь). Итак, в этом примере две области:
1
1,1
1
1,1,1,1
1
и:
1
1,1
1
Алгоритм, над которым я работал, находит всех соседей соседей ячейки и отлично работает на таких типах матриц. Однако, когда я использую большие массивы (например, 90 * 90), программа очень медленная, а иногда огромные массивы, которые используются, вызывают переполнение стека.
Один парень по моему другому вопросу рассказал мне о маркировке связанных компонентов как эффективное решение моей проблемы.
Может ли кто-нибудь показать мне какой-нибудь код на С++, который использует этот алгоритм, потому что я немного смущен тем, как он работает вместе с этой структурой данных, не связанной с разделом...
Большое спасибо за вашу помощь и время.