Решение: Максимум и минимум монет
Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). В каждой клетке лежит монета достоинством от 1 до 100. Робот начинает движение из левой верхней клетки и может перемещаться только вправо или вниз, не проходя через внутренние и внешние стены. Посетив клетку, Робот забирает лежащую в ней монету. Движение заканчивается в клетке, которая ограничена стенами справа и снизу. Определите максимальную и минимальную суммы монет среди всех возможных маршрутов.
Исходные данные находятся в прилагаемом файле электронной таблицы размером $N \times N$. В ответе укажите два числа: сначала максимальную сумму, затем минимальную.
Решение по шагам
5 шаговОбозначим через $max[i][j]$ и $min[i][j]$ соответственно максимальную и минимальную суммы монет на пути из левой верхней клетки в клетку $(i,j)$.
Если в клетку можно прийти сверху или слева, выбираем лучший и худший из соответствующих вариантов и прибавляем монету в текущей клетке.
$$max[i][j] = a[i][j] + \max(max[i-1][j], max[i][j-1])$$Аналогично вычисляется минимальная сумма.
$$min[i][j] = a[i][j] + \min(min[i-1][j], min[i][j-1])$$Переход через стену запрещён, поэтому значение от соответствующего направления не учитывается. Для всех клеток, ограниченных стенами справа и снизу, рассматриваем вычисленные суммы.
Максимальный ответ равен наибольшему значению $max[i][j]$ среди конечных клеток, минимальный — наименьшему значению $min[i][j]$ среди них.
Числовой ответ невозможно определить без прилагаемого файла с таблицей монет и стенами.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Учитывают только правую нижнюю клетку, хотя конечных клеток может быть несколько.
Разрешают переход через внутреннюю стену.
Не включают монеты в начальной или конечной клетке.
Ищут один маршрут, одновременно максимизирующий и минимизирующий сумму.