Шешімі: Маршрут Робота по клеткам
Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо» Робот перемещается в соседнюю правую клетку, по команде «вниз» — в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены, сквозь которые Робот пройти не может.
Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.
Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. Исходные данные представляют собой электронную таблицу размером $N \times N$, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщёнными линиями.
Для приведённого примера входных данных определите максимальную и минимальную суммы.
Шешім по шагам
4 қадамИспользуем динамическое программирование: в каждой клетке вычисляем максимальную и минимальную суммы монет на пути из левой верхней клетки.
$$M_{i,j}=a_{i,j}+\max(M_{i-1,j},M_{i,j-1}),\quad m_{i,j}=a_{i,j}+\min(m_{i-1,j},m_{i,j-1})$$Для таблицы из примера значения максимальных сумм в последней строке равны $14$, $18$, $35$, $41$.
Значения минимальных сумм в последней строке равны $14$, $16$, $21$, $22$.
В правой нижней клетке получаем максимальную сумму $41$ и минимальную сумму $22$.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Не учитывать монеты в начальной и конечной клетках.
Искать только один из двух нұсқа пути — максимальный или минимальный.
Складывать значения клеток без учёта внутренних стен.