64 最小路徑和

2021-10-02 14:38:07 字數 1914 閱讀 7698

給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。

說明:每次只能向下或者向右移動一步。

示例:輸入:

[[1,3,1],

[1,5,1],

[4,2,1]

]輸出: 7

解釋: 因為路徑 1→3→1→1→1 的總和最小。

1.動態規劃,優化:用原陣列來代替使用的輔助空間陣列

2.遞迴

class solution(object):

def minpathsum(self, grid):

""":type grid: list[list[int]]

:rtype: int

dp[i][j] = min(dp[i][j-1],dp[i-1][j])+grid[i][j]

"""if not grid:

return 0

m = len(grid)

n = len(grid[0])

dp = [[0]*n]*m

for i in range(len(grid)):

for j in range(len(grid[0])):

if i!=0 and j!=0:

dp[i][j] = min(dp[i][j-1],dp[i-1][j])+grid[i][j]

elif i == 0 and j!=0:

dp[i][j] = dp[i][j-1]+grid[i][j]

elif j==0 and i!=0:

dp[i][j] = dp[i-1][j]+grid[i][j]

else:

dp[i][j] = grid[i][j]

return dp[m-1][n-1]

class solution:

def minpathsum(self, grid: list[list[int]]) -> int:

'''grid[i][j]=min(grid[i][j-1],grid[i-1][j])+1

'''if not grid:return 0

#grid=[[0 for _ in range(len(grid[0]))] for _ in range(len(grid))]

for i in range(len(grid)):

for j in range(len(grid[0])):

if i!=0 and j!=0:

grid[i][j] = min(grid[i][j-1],grid[i-1][j])+grid[i][j]

elif i == 0 and j!=0:

grid[i][j] = grid[i][j-1]+grid[i][j]

elif j==0 and i!=0:

grid[i][j] = grid[i-1][j]+grid[i][j]

elif i==0 and j==0:

grid[i][j] = grid[i][j]

return grid[-1][-1]

class solution(object):

def path(self,grid,i,j):

if i==len(grid) or j == len(grid[0]):

return float('inf')

if i==len(grid)-1 and j == len(grid[0])-1:

return grid[i][j]

return grid[i][j]+min(self.path(grid,i+1,j),self.path(grid,i,j+1))

def minpathsum(self, grid):

return self.path(grid,0,0)

64 最小路徑和

給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。用動態規劃可直接解決,dp i j 代表著從 0 0 ...

64 最小路徑和

方法一 動態規劃法 二維 該問題可以通過動態規劃的方法進行求解,動態規劃最主要的是將其動態轉移方程寫出來。由於該每次只能向下和向右移動,故可以知道,對於位置m,n處,到達該點只能通過位置m,n 1處以及位置m 1,n處,故最小的路徑應為二者較小值加當前位置的值,定義dp i j 為位置i,j處的最小...

64 最小路徑和

題目描述 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。知識點 動態規劃 多階段決策最優解模型,每階段都對應一組狀態 狀態轉移方程構造方式 遞迴 備忘錄 反向遞迴 迭代遞推 正向迭代 思路和 狀態轉移方式 ...