Задать вопрос
@Mootfrost
C#, C++, JS, Python

Как правильно пропарсить лабиринт в граф?

У меня есть лабиринт в двумерном массиве. Как мне правильно его превратить в матрицу смежности, если вершины графа - каждый поворот? Вес ребра - расстояние между двумя вершинами. Его тоже надо получить
  • Вопрос задан
  • 400 просмотров
Подписаться 1 Средний 2 комментария
Решение пользователя Alexandroppolus К ответам на вопрос (5)
Alexandroppolus
@Alexandroppolus
кодир
Похоже, тут обычный поиск в ширину. Сначала находишь первую вершину (просмотреть первую строку, потом вторую и т.д., первая попавшаяся звездочка будет поворотом или тупиком). Ну а далее все соседние звездочки - это соседние вершины, либо пути в соседние вершины (то есть в каждую сторону идешь прямо, пока встречаются "транзитные" звездочки, а именно ограниченные решетками или краями карты с двух противоположных сторон, и подсчитываешь длину пути).
Если в лабиринте только одно пространство, то обойдешь всё. Иначе надо после завершения обхода в ширину снова искать неотмеченные вершины.
Ответ написан
Комментировать