У нас есть лабиринт R X C, где 1 < = R, C < = 500. Этот лабиринт заполнен числами от -1 до 100. Теперь игра выглядит следующим образом:Интересный лабиринт
Где когда-либо есть -1 в квадрате, предположим, что это камень преткновения в , что клетка, и вы не можете двигаться Повсеместно эта клетка. Вы можете начать с любой ячейкой в 1-й колонке (конечно, которая не имеет -1) и выйти из в любую ячейку из последнего столбца. Вы можете перемещаться вверх, вниз, вправо. Как вы двигаетесь, u собирайте числа в ячейке, кроме -1, которые обозначают большой камень, который находится в нашем лабиринте. Каждая ячейка должна посещаться только .
Каков путь слева направо, где вы можете выбрать максимальную сумму чисел? ЛЕГКО !! Dp может делать магию Но Но ... вот улов - Правило 5.
Мы можем выйти из лабиринта, если мы сможем достичь первого или нижнего ряда. Но затем 2 вещи случаются:
a) Мы теряем все собранные до сих пор пункты.
b) мы располагаем лабиринт в той же колонке, но в противоположной ячейке.
ex: рассмотрите лабиринт 3X3 (1-indexed). поэтому, если мы доберемся, (1,2), мы можем выйти оттуда и потерять все точки и войти (3,2), и игра продолжается ....
Теперь мы должны найти путь с оценкой maxiumum ,
Я не могу видеть, как мы можем захватить это прыгание и обратно в лабиринте путем динамического программирования? Кроме того, каждый раз, когда мы это делаем, мы должны делать оценку «0».
Пример:
рассмотреть лабиринт:
-1 4 5 1
2 -1 2 4
3 3 -1 -1
4 2 1 2
ответ = 16.
(4,1) -> (4,2) -> (1,2) -> (1,3) -> (2,3) -> (2,4) -> (1,4)
что значит «мы должны сделать оценку„0“каждый раз, когда мы делаем это» означает? – ergonaut
@ergonaut, в приведенном выше примере: (4,2) -> (1,2) заставляет нас потерять все собранные точки и, следовательно, когда мы достигнем (1,2), наша оценка равна «0». В противном случае, если учесть только (4,1) -> (4,2), мы имели бы счет (4 + 2) = 6. –
это поможет, если вы отформатируете свой лабиринт. – ergonaut