1. 解题思路
这一题是leetcode周赛475的第三题,是一个medium的题目。
这一题我的思路还是比较暴力的,就是一个直接的动态规划的思路,算是直接搞定了,虽然耗时来说还是挺久的。
2. 代码实现
给出python代码实现如下:
class Solution:
def maxPathScore(self, grid: List[List[int]], k: int) -> int:
n, m = len(grid), len(grid[0])
@lru_cache(None)
def dp(i, j, k):
if k < 0:
return -math.inf
elif i == n-1 and j == m-1:
return 0
ans = -math.inf
if 0 <= i+1 < n:
ans = max(ans, grid[i+1][j] + dp(i+1, j, k - min(grid[i+1][j], 1)))
if 0 <= j+1 < m:
ans = max(ans, grid[i][j+1] + dp(i, j+1, k - min(grid[i][j+1], 1)))
return ans
ans = dp(0, 0, k)
return ans if ans >= 0 else -1
提交代码评测得到:耗时14754ms,占用内存637.37MB。
网格中的最大路径得分
1508

被折叠的 条评论
为什么被折叠?



