18

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

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

Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот начинает движение из левой верхней клетки и может перемещаться только вправо или вниз. Между соседними клетками могут находиться внутренние стены, сквозь которые Робот пройти не может. В каждой клетке лежит монета достоинством от 1 до 100; посетив клетку, Робот забирает монету. В клетках, которые справа и снизу ограничены стенами, движение заканчивается, а накопленная сумма считается итоговой. Определите максимальную и минимальную суммы среди всех возможных маршрутов от левой верхней клетки до конечной клетки. Исходные данные находятся в прилагаемом файле электронной таблицы: значения клеток и внутренние стены обозначены в таблице.

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

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

5 шагов
1

Сначала считываем из файла стоимость монет в каждой клетке и наличие стен между соседними клетками.

2

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

3

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

$$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})$$
4

Для переходов, закрытых стеной, соответствующий источник не учитывается. В начальной клетке обе суммы равны стоимости её монеты.

На всех клетках, ограниченных стенами справа и снизу, выбираем максимальное и минимальное из рассчитанных значений.

Ответ

Точный числовой ответ невозможно определить без содержимого прилагаемой электронной таблицы.

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

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

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

Проходят через внутреннюю стену.

Не добавляют стоимость монеты начальной или конечной клетки.

Для всех клеток используют только максимум или только минимум вместо одновременного вычисления обоих значений.

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

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

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

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