Минимальная сумма пути

Дана сетка высотой h и шириной w, заполненная целыми числами. Нужно найти маршрут из левого верхнего угла в правый нижний, при котором сумма чисел на пути будет минимальной. Разрешается двигаться только вправо или вниз.
 
3
2
1
3
1
9
2
3
9
1
5
4

Входные данные

Первая строка входных данных содержит два целых числа h и w (1 ≤ h, w ≤ 1000).
Следующие h строк содержат по w целых чисел, разделенных пробелами, , которые обозначают значения в сетке .

Выходные данные

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

Примеры

Входные данные
Выходные данные
3 4 3 2 1 3 1 9 2 3 9 1 5 4
15

Пояснение

Возможный путь: 3 → 2 → 1 → 2 → 3 → 4
 
Подсказка 1
В задаче динамического программирования состояние может быть представлено двумерным массивом.
Подсказка 2
В этом массиве можно хранить наилучшее решение для каждой координаты (d[r][c] означает лучший путь, позволяющий достичь строки r и столбца c).
 

Почему жадный подход не работает в данной задаче? Представьте, что вы всегда выбираете движение в направлении наименьшего элемента. Какую проблему это может вызвать?
 

Constraints

Time limit: 3 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue