Шешімі: Максимальная и минимальная сумма
Квадрат разлинован на $N \times N$ клеток ($1 < N < 30$). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде «вправо» Робот перемещается в соседнюю правую клетку, по команде «вниз» — в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может.
Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.
Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. Исходные данные представлены в прилагаемом файле.
Шешім по шагам
4 қадамОбозначим через $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])$$В начальной клетке обе таблицы получают значение номинала монеты в этой клетке. Ответом являются значения в правой нижней клетке.
Числовые значения определяются по данным прилагаемого файла.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Не учитывают монету в начальной или конечной клетке.
Переходят через внутреннюю стену.
Используют только одну таблицу и получают только максимум или только минимум.
Складывают номиналы клеток, не проверяя достижимость маршрута.