解题思路:一开始是想用dfs,结果超出时间限制,就改为动态规划,右下角点只能通过它上方或者左边的点达到,只要求得这两个未知的最大值即可,一直递推到最开始,所以我们只要一次求出每个位置的最大值即可,状态转移方程为:dp[i][j]=max(dp[i][j-1],dp[i-1][j])+grid[i][j]
,代码如下:
class Solution:
def maxValue(self, grid: List[List[int]]) -> int:
m = len(grid)
if m == 0:
return 0
n = len(grid[0])
if n == 0:
return 0
for i in range(m):
for j in range(n):
t1, t2 = 0, 0
if i - 1 >= 0:
t1 = grid[i-1][j]
if j -1 >= 0:
t2 = grid[i][j-1]
grid[i][j] += max(t1, t2)
return grid[-1][-1]