Форум сайта python.su
Помогите пожалуйста решить задачу:
В каждой клетке прямоугольной таблицы NM записано некоторое число. Изначально игрок находится в левой верхней клетке. За один ход ему разрешается перемещаться в соседнюю клетку либо вправо, либо вниз (влево и вверх перемещаться запрещено). При проходе через клетку с игрока берут столько килограммов еды, какое число записано в этой клетке (еду берут также за первую и последнюю клетки его пути).
Требуется найти минимальный вес еды в килограммах, отдав которую игрок может попасть в правый нижний угол.
Входные данные
Вводятся два числа N и M — размеры таблицы (1N20, 1M20). Затем идет N строк по M чисел в каждой — размеры штрафов в килограммах за прохождение через соответствующие клетки (числа от 0 до 100).
Выходные данные
Выведите минимальный вес еды в килограммах, отдав которую можно попасть в правый нижний угол.
Примеры
входные данные
5 5
1 1 1 1 1
3 100 100 100 100
1 1 1 1 1
2 2 2 2 1
1 1 1 1 1
выходные данные
11
Офлайн
Padro
uniform search
Офлайн
Я искал, на питоне нет её
Офлайн
Данная задача может быть сведена к задаче поиска минимального маршрута на графе. Для этого есть алгоритм Дейкстры и даже его реализация на Python легко находится. Теперь остается правильно построить граф исходя из задачи…Граф здесь, например, будет из M*N вершин. А веса матрицы смежности можно заполнить автоматически исходя из правил прохода по исходной матрице.
Офлайн