У меня есть матрица, представляющая сетку, и я хотел бы выяснить все возможные места, в которые может перемещаться объект.
Объект может двигаться только горизонтально или вертикально.
Предположим, чтоПример ниже - это сетка, на которую я смотрю, которая представлена в виде 2-мерной матрицы.Объект - это *, 0 - это пустые места, в которые объект может двигаться, а 1 - это стены, через которые объект не может перепрыгнуть или перейти.
Каков наилучший способ найти все возможные движенияэтого объекта при условии, что он может двигаться только горизонтально или вертикально?
Я хотел бы напечатать сообщение, говорящее: «Есть 9 мест, куда может пойти объект».9 для примера ниже, но я хотел бы, чтобы он работал для любой конфигурации сетки ниже.Поэтому все, что мне нужно сделать, это дать текущие координаты *, и это даст мне количество возможных позиций, на которые он может переместиться.
Следует отметить, что исходная позиция * не считаетсяв вычислениях, поэтому в приведенном ниже примере сообщение будет печатать 9, а не 10.
У меня есть метод isaWall, который сообщает мне, является ли ячейка стеной или нет.Метод isaWall находится в классе Cell.Каждая ячейка представлена своими координатами.Я изучал использование таких алгоритмов, как BFS или DFS, но я не совсем понимал, как реализовать их в этом случае, так как я не слишком знаком с алгоритмами.Я думал об использовании ячеек в качестве узлов графа, но не был слишком уверен, как пройти по графу, потому что из примеров, которые я видел в Интернете о BFS и DFS, вы обычно имели бы целевой узел и исходный узел (источником являетсяположение *), но в этом случае у меня нет узла назначения.Я был бы очень признателен за помощь.
00111110
01000010
100*1100
10001000
11111000
РЕДАКТИРОВАТЬ: я проверил веб-сайт, который был рекомендован в комментариях и попытался реализовать свою собственную версию.К сожалению, это не сработало.Я понимаю, что мне нужно расширить «границу», и я просто перевел код расширения на Java, но он все еще не работает.Веб-сайт продолжает объяснять процесс, но в моем случае нет целевой ячейки для перехода.Я был бы очень признателен за пример или более четкое объяснение, относящееся к моему делу.
РЕДАКТИРОВАТЬ2: Я до сих пор смущен этим, может кто-нибудь, пожалуйста, помогите?