R6-多维动态规划篇
好经典的dp题,纯粹的题。
多维动态规划无论是二维还是三维,无非是创建dp表,dp[][][][][][]即可
动态规划式子
dp[i][j]=当前值+min(dp[i][j-1],dp[i-1][j])
边界问题处理:是否存在即可。哦对了好像不用这样,边界那两列直接抄就行,然后后面的小一圈,不用考虑边界问题。
class Solution:
def minPathSum(self, grid: List[List[int]]) -> int:
m=len(grid)
n=len(grid[0])
dp=[[0]*n for _ in range(m)]
dp[0][0]=grid[0][0]
for i in range(1,m):
dp[i][0]=dp[i-1][0]+grid[i][0]
for i in range(1,n):
dp[0][i]=dp[0][i-1]+grid[0][i]
for i in range(1,m):
for j in range(1,n):
dp[i][j]=grid[i][j]+min(dp[i-1][j],dp[i][j-1])
return dp[m-1][n-1]