Решение: Максимальная и минимальная сумма
Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо» Робот перемещается в соседнюю правую клетку, по команде «вниз» — в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может.
Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.
Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. Исходные данные представляют собой электронную таблицу размером $N \times N$, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщёнными линиями.
Решение по шагам
4 шагаСчитываем из электронной таблицы размер квадрата, стоимость монет в клетках и расположение внутренних стен.
Для каждой клетки вычисляем максимальную сумму, которую можно получить при попадании в неё из левой верхней клетки. Переходы через стены и недостижимые клетки не учитываются.
$$F_{i,j}=a_{i,j}+\max(F_{i-1,j},F_{i,j-1})$$Аналогично вычисляем минимальную сумму для каждой клетки.
$$G_{i,j}=a_{i,j}+\min(G_{i-1,j},G_{i,j-1})$$В ответ записываем значения для правой нижней клетки: сначала максимум, затем минимум.
Точные значения определяются по данным приложенной электронной таблицы.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Не учитывать монеты в начальной или конечной клетке.
Разрешать переход через внутреннюю стену.
Перепутать порядок вывода максимальной и минимальной сумм.
Использовать только один массив и потерять один из двух типов оптимального пути.