Робот движется из левой верхней клетки в правую нижнюю. Он может перемещаться только влево или вверх. Это означает, что для достижения правой нижней клетки, робот должен двигаться строго вправо и вниз. Однако, условие задачи гласит, что робот может двигаться только влево или вверх. Это противоречит задаче достижения правой нижней клетки из левой верхней. Предполагается, что команды робота на самом деле вправо и вниз, чтобы задача имела смысл.
Рассмотрим поле как матрицу:
| 20 | 12 | 11 | 21 |
| 18 | 20 | 5 | 20 |
| 6 | 18 | 10 | 15 |
| 7 | 9 | 7 | 36 |
Робот стартует в левой верхней клетке (20) и должен добраться до правой нижней клетки (36). Он может двигаться только вправо и вниз.
Минимальная сумма:
Будем использовать динамическое программирование. Создадим матрицу dp_min, где dp_min[i][j] будет хранить минимальную сумму для достижения клетки (i, j).
dp_min[i][j] = grid[i][j] + min(dp_min[i-1][j], dp_min[i][j-1])
Начальные условия:
Заполняем матрицу dp_min:
| 20 | 32 | 43 | 64 |
| 38 | 52 | 48 | 84 |
| 44 | 62 | 58 | 99 |
| 51 | 60 | 57 | 93 |
Минимальная сумма: 93
Максимальная сумма:
Аналогично, создадим матрицу dp_max, где dp_max[i][j] будет хранить максимальную сумму для достижения клетки (i, j).
dp_max[i][j] = grid[i][j] + max(dp_max[i-1][j], dp_max[i][j-1])
Начальные условия:
Заполняем матрицу dp_max:
| 20 | 32 | 43 | 64 |
| 38 | 52 | 48 | 84 |
| 44 | 62 | 58 | 99 |
| 51 | 60 | 57 | 135 |
Максимальная сумма: 135
Ответ: 93 135