Самые длинные пути с учетом максимальной длины - PullRequest
1 голос
/ 07 февраля 2011

Мне нужна помощь.

Я постараюсь объяснить как можно лучше.

Допустим, у меня есть двумерная сетка, которая является моим "миром".

Сетка выглядит так:

grid

Серые квадраты - это трава. Зеленые квадраты - это дороги. Оранжевые квадраты пустынны.

Синий квадрат посередине - моя машина. У моей машины предел дальности 5 квадратов. Я хочу найти и выделить ВСЕ квадраты, которых я могу достичь с максимальным диапазоном или меньше.

Проезд через серый квадрат стоит 1 диапазон. Ничего фантастического. Тем не мение, Проезд через зеленый квадрат дает вам диапазон +0,5. Это означает, что если первые 2 квадрата, через которые вы проезжаете, зеленые, ваш максимальный диапазон внезапно равен 6. Проезжая через оранжевый квадрат, вы получаете штраф -0,5 к дистанции. Это означает, что если первые 2 квадрата, через которые вы проезжаете, оранжевого цвета, максимальный диапазон составляет только 4.

Так что, в основном, проезд до квадрата стоит вам 1 диапазон, но в зависимости от квадрата он может дать вам дополнительный диапазон или меньший диапазон.

Разведка всех путей с учетом бонусов. Сделал бы самый внешний вид моей машины таким: enter image description here

Так что да, я хочу найти способ найти все квадраты, отмеченные черными рамками, и все внутри них. Так что все квадраты в моем максимальном диапазоне подсвечиваются.

Длинный вопрос, но как мне этого добиться?

Сначала я посмотрел в ширину и глубину и т. Д., Но, поскольку я могу пройти несколько маршрутов через один и тот же квадрат, я не могу пометить его как "посещенный" в первый раз, а затем никогда не вернусь к нему?

Помощь по этому вопросу была бы очень признательна.

Спасибо, что прочитали все здесь.

/ E

1 Ответ

9 голосов
/ 07 февраля 2011

Вы можете представить свою модель немного проще, все с точки зрения стоимости, а не бонусы.

  1. У вас есть 5 дней на поездку.
  2. Проезд через один квадрат травы занимает 1 день.
  3. Проезд через один квадрат пустыни занимает 1,5 дня.
  4. Движение по дороге занимает 0,5 дня для каждого отрезка.

Теперь у вас есть простой график, и вы можете найти все местоположения не дальше 5 дней с алгоритмом Дейкстры .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...