@aygumov

Как найти длинный путь между двумя точками?

63119b8c325bf040571327.jpeg

Как искать самый длинный путь между ее головой и красной точкой?
  • Вопрос задан
  • 245 просмотров
Решения вопроса 2
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Зачем вам самый длинный путь? Вообще, эта задача очень сложная. Кратчайший путь можно найти обходом в щирину или глубину, быстро и просто. Самый длинный - только полным перебором. Возможно, его можно как-то соптимизировать используя особенности вашей конкретной задачи (вроде заполнения прямоугольника змейкой и конструтирование маршрута из таких шаблонов), но это тоже очень сложно.
Ответ написан
maaGames
@maaGames
Погроммирую программы
Самый длинный путь - эта задача нерешаема, т.к. в самом начале игры змейка будет просто кругами бегать ВЕЧНО, ведь нет запрета на посещение одной и той же клетки.
Но вы решаете совсем другую задачу.
У вас задача съесть точку и удлинить змею, но не уткнуться в себя самого.
Для этого задаёте список правил, которые, с большой долей вероятности, позволят эту точку избегать:
2. двигаться вдоль границ игрового поля
1. двигаться вдоль тела змейки
3. ВАЖНО! не создавать петли. т.е. приближаясь к хвосту/стенке нежелательно оставлять незаполненные области
4. избегать движения к точке
5... ещё что-нибудь, что сразу в голову не приходит
X. делать пункты 1-4 на несколько ходов вперёд. Допустим, на 50 щагов вперёд можно без проблем просчитываь. Если на 47 шаге скушали точку, при этом оставались пустые клетки, то отматываете назад и пробуете двигаться в другие стороны.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@NIKROTOS
Начинающий программист.
Просто поворачивай дважды в крайних положениях и дойдёшь до конца(разворот на 180 на краю)
Ответ написан
Комментировать
LaRN
@LaRN
Senior Developer
В конкретно в этой задаче кажется, что самое длинное расстояние, это количество ячеек игрового поля в области, которая содержит красную точку. Т.е. это можно попробовать решить каким либо алгоритмом заливки области цветом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы