给定一个包含非负整数的 m x n
网格 grid
,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
class Solution(object):
def minPathSum(self, grid):
if not grid or not grid[0]:
#print("failt")
return
a= len(grid)
b= len(grid[0])
dp=[ [0]*b for i in range(a) ]
#print(dp)
dp[0][0]=grid[0][0]
for i in range(a):
for j in range(b):
if i==0 and j==0:
continue
elif i==0:
dp[i][j]=dp[i][j-1]+grid[i][j]
elif j==0:
dp[i][j]=dp[i-1][j]+grid[i][j]
else:
dp[i][j]=min(dp[i][j-1],dp[i-1][j])+grid[i][j]
return dp[a-1][b-1]
exam=Solution()
print("答案:")
print(exam.minPathSum([[0]]))
ps:python新建一个数组的方法👇
举个例子