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