Учитывая 2D-массив и число K
.
ПРОБЛЕМА: у нас есть матрица cost[][]
, и каждая ячейка матрицы представляет собой стоимость прохождения через эту ячейку. мы начинаем с верхнего левого угла (0,0)
и должны дойти до последней ячейки (справа внизу). Мне нужно написать функцию, которая возвращает стоимость пути с максимальной стоимостью для достижения (m,n)
без превышения числа K
.
Общая стоимость пути для достижения (m, n)
- это сумма всех затраты на этом пути (включая источник и место назначения), и сумма должна быть меньше или равна K
. Мы можем двигаться только вниз, вправо или по диагонали вниз-вправо.
Если мы не можем найти путь, максимальная сумма которого меньше или равна K
, мы возвращаем -1
, а значение матрицы не может быть отрицательным
Решение: я пробовал много кодов, но ни один из них не дал ожидаемых результатов.
Моим первым решением было преобразовать 2D-массив в простой массив и применить алгоритм ранца , но он не сработал, потому что логически путь не был пройден. ( лог c упражнения исчезли с этой идеей )
Я пробовал также рекурсивную формулу, но она не сработала. Получил ошибку « максимальная глубина рекурсии ». Когда я решил эту проблему рекурсии, мой алгоритм не учел ограничение числа, которое не должно быть превышено.
Мне не нужен код, мне просто нужны некоторые объяснения, чтобы иметь возможность решить проблему (особенно математическая формула). спасибо
Пример:
if we had this 3*3 matrix:
cost[][] = {{2,3,1}, {6,1,9},{8,2,3}}
and k = 7
ответ должен быть 6 :(0,0)->(1,1)->(3,3)