Задача
В левом верхнем углу прямоугольной таблицы размером n×m находится черепашка. На каждой клетке таблицы разлито некоторое количество кислоты. Черепашка может перемещаться вправо или вниз, при этом маршрут черепашки заканчивается в правом нижнем углу таблицы.
Каждый миллилитр кислоты приносит черепашке некоторое количество урона. Найдите наименьшее возможное значение урона, которое получит черепашка после прогулки по таблице.
Входные данные
В первой строке записаны два натуральных числа n и m, не превосходящие 1000 — размеры таблицы. Далее идёт n строк, каждая из которых содержит m чисел, разделённых пробелами — описание таблицы с указанием для каждой клетки содержания кислоты на ней (в миллилитрах).
Выходные данные
Вывести минимальную возможную стоимость маршрута черепашки.
Тесты
Входные данные | Выходные данные |
3 4 | 35 |
5 9 4 3 | |
3 1 6 9 | |
8 6 8 12 | |
1 1 | 1 |
1 | |
5 6 | 25 |
1 2 3 4 5 6 | |
1 2 3 4 5 6 | |
1 2 3 4 5 6 | |
1 2 3 4 5 6 | |
1 2 3 4 5 6 | |
4 1 | 103 |
100 | |
1 | |
1 | |
1 | |
1 5 | 7 |
1 1 2 2 1 |
Код программы
Решение задачи
Для начала посчитаем значение для каждой клетки 0-ой строки и 0-ого столбца. Далее, для каждой клетки (i,j), где i>0 и j>0, считаем значение клетки как сумму значения, лежащего в этой клетке и минимум из пути, откуда черепашка могла прийти (т. е. минимум из клетки (i−1,j) и клетки (i,j−1)). Ответом будет значение, лежащее в клетке (n−1,m−1).
Для считывания данных использовался
BufferedReader, а не
Scanner, так как
Scanner работает дольше и из-за этого проходит не все тесты.