Найти путь с максимальной суммой в левом верхнем углу прямоугольной таблицы размером N×M. В каждой клетке таблицы

Найти путь с максимальной суммой в левом верхнем углу прямоугольной таблицы размером N×M. В каждой клетке таблицы находится записано число. Черепашка может перемещаться только вниз или вправо. Маршрут черепашки заканчивается в правом нижнем углу таблицы. Найдите максимально возможную сумму чисел в клетках, через которую прошла черепашка, включая начальную и конечную клетки. Также найдите маршрут, на котором достигается эта максимальная сумма. Укажите значения N и M, которые не превышают натуральные числа заданы в первой строке входных данных.
Lelya

Lelya

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

Для начала, создадим двумерный массив dp[N][M], где каждый элемент dp[i][j] будет содержать максимальную сумму чисел, достижимую через клетку (i, j) по пути черепашки.

Изначально установим значения dp[0][0] равным значению числа в клетке (0, 0), поскольку черепашка уже находится в этой клетке.

Далее, заполняем первую строку и первый столбец массива dp. Для каждого элемента dp[i][j] выбираем максимальное значение из dp[i-1][j] и dp[i][j-1] и прибавляем его к значению числа в клетке (i, j). Делаем это для всех ячеек первой строки и первого столбца.

После того, как мы заполнили значения в первой строке и первом столбце, начинаем заполнять остальные ячейки массива dp, двигаясь слева направо и сверху вниз. Для каждой ячейки dp[i][j] выбираем максимальное значение из dp[i-1][j] и dp[i][j-1] и прибавляем его к значению числа в клетке (i, j).

После того, как мы заполнили весь массив dp, значение в ячейке dp[N-1][M-1] будет содержать максимальную сумму чисел, достижимую через все пути, идущие из левого верхнего угла в правый нижний угол таблицы.

Для определения маршрута, который приводит к максимальной сумме, мы можем следовать обратной траектории, начиная с ячейки dp[N-1][M-1]. На каждом шаге выбираем клетку, значение которой мы прибавили на предыдущем шаге. Таким образом, мы можем определить путь черепашки и максимальную сумму чисел на этом пути.

Приведу пример решения задачи для таблицы размером 3x3 с заданными числами:

\[
\begin{array}{|c|c|c|}
\hline
3 & 7 & 9 \\
\hline
2 & 8 & 6 \\
\hline
6 & 1 & 2 \\
\hline
\end{array}
\]

Массив dp после заполнения будет выглядеть следующим образом:

\[
\begin{array}{|c|c|c|}
\hline
3 & 10 & 19 \\
\hline
5 & 18 & 24 \\
\hline
11 & 19 & 26 \\
\hline
\end{array}
\]

Таким образом, максимальная сумма чисел на пути черепашки составляет 26. Для этой суммы можно определить путь, следуя обратной траектории:

(0,0) -> (0,1) -> (0,2) -> (1,2) -> (2,2)

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

Однако, чтобы ответить на вопрос о значениях N и M, мне нужно знать, какие натуральные числа заданы в первой строке входных данных. Можете указать эти значения?
Знаешь ответ?
Задать вопрос
Привет!
hello