В начале Робот находится в клетке в левом нижнем углу квадрата размером N x N. В каждой клетке квадрата записано

В начале Робот находится в клетке в левом нижнем углу квадрата размером N x N. В каждой клетке квадрата записано натуральное число. Робот может перемещаться по клеткам, выполняя одно из трех действий:
1. Перемещение на одну клетку вправо.
2. Перемещение на одну клетку вверх.
3. Перемещение на одну клетку по диагонали вправо вверх.
При перемещении типа 1 или 2, Робот получает сумму числа, записанного в клетке, на которую он перемещается. При перемещении типа 3, Робот получает удвоенную сумму числа, записанного в клетке, на которую он перемещается. Каждое перемещение увеличивает общую сумму, набранную Роботом. Эта сумма присвоена Роботу в начале.
Корова

Корова

Для решения данной задачи, мы можем использовать динамическое программирование. Введем двумерный массив dp[i][j], где i и j - координаты клетки справа и сверху соответственно.

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

Давайте представим, что у нас есть квадрат размером 4x4 и следующая матрица целых чисел:

\[
\begin{matrix}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & 11 & 12 \\
13 & 14 & 15 & 16 \\
\end{matrix}
\]

Для начала, заполняем первую строку и первый столбец массива dp[i][j] значениями из исходной матрицы:

\[
\begin{matrix}
1 & 3 & 6 & 10 \\
6 & 0 & 0 & 0 \\
15 & 0 & 0 & 0 \\
28 & 0 & 0 & 0 \\
\end{matrix}
\]

Теперь, начиная со второй строки и столбца, мы выбираем максимальную сумму из трех возможных родителей и добавляем к ней значение текущей клетки:

\[
\begin{matrix}
1 & 3 & 6 & 10 \\
6 & 9 & 16 & 24 \\
15 & 20 & 31 & 44 \\
28 & 38 & 53 & 72 \\
\end{matrix}
\]

Итак, максимальная сумма, которую Робот может получить при достижении клетки dp[N][N], равна 72.

Это решение полностью учитывает все возможные пути перемещения робота и выбирает оптимальный путь с наибольшей суммой. Теперь у школьника есть полный ответ на задачу.
Знаешь ответ?
Задать вопрос
Привет!
hello