РУҚА
8

Решение: Максимальная и минимальная сумма

ЕГЭ · Информатика · Задание 8 · Динамическое программирование
ВысокаяФИПИ15F347Короткий ответ≈ 10 минутРазбор в 4 шага
Условие

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо» Робот перемещается в соседнюю правую клетку, по команде «вниз» — в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может.

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.

В «угловых» клетках поля — тех, которые справа и снизу ограничены стенами, — Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля. При разных запусках итоговые накопленные суммы могут различаться.

Определите максимальную и минимальную денежные суммы среди всех возможных итоговых сумм, которые может собрать Робот, пройдя из левой верхней клетки в конечную клетку маршрута. Исходные данные находятся в прилагаемом файле электронной таблицы размером $N \times N$: каждая ячейка соответствует клетке квадрата, а внутренние и внешние стены обозначены утолщёнными линиями.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

4 шага
1

Считаем левую верхнюю клетку начальной: её монета входит в сумму каждого маршрута.

2

Для каждой клетки храним две величины: максимальную и минимальную сумму, которую можно получить при попадании в эту клетку.

3

Если из клетки можно перейти вправо или вниз, переносим в соседнюю клетку текущую сумму плюс достоинство монеты в соседней клетке. При нескольких переходах сохраняем максимум или минимум соответственно.

$$D_{\max}(r,c)=a_{r,c}+\max D_{\max}(\text{предшественники}),\quad D_{\min}(r,c)=a_{r,c}+\min D_{\min}(\text{предшественники})$$

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

Ответ

Значения зависят от данных в прилагаемом файле: сначала максимальная сумма, затем минимальная.

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Не учитывать монету в начальной или конечной клетке.

Продолжать маршрут через внутреннюю стену.

Рассматривать только правую нижнюю клетку и игнорировать другие конечные клетки.

Для всех клеток использовать только максимум или только минимум.

Закрепить приёмВ теме «Динамическое программирование» ещё 71 задача — с ответом и таким же разбором.
Тренироваться

Как решать задание 8 ЕГЭ, информатика

Разбор этой задачи разложен на 4 шага: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Динамическое программирование»: в ней 72 задачи, и у каждой есть такой же разбор. Регистрация не нужна.