03 LeetCode 最小路徑和(動態規劃)

2021-10-19 11:43:53 字數 992 閱讀 4917

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

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

經分析,狀態轉移方程如下:

當 i>0 且 j=0時,dp[i][0]=dp[i−1][0]+grid[i][0]。

當 i=0且 j>0 時,dp[0][j]=dp[0][j-1]+grid[0][j]。

當 i>0且 j>0 時,dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]

那麼最後得到的 dp[m-1][n-1] 的值即為從網格左上角到網格右下角的最小路徑和。

class

solution

int rows = grid.

size()

, columns = grid[0]

.size()

;auto dp = vector < vector <

int>

>

(rows, vector <

int>

(columns));

//vector> dp(rows,vector (columns));

dp[0]

[0]= grid[0]

[0];

for(

int i =

1; i < rows; i++

)for

(int j =

1; j < columns; j++

)for

(int i =

1; i < rows; i++)}

return dp[rows -1]

[columns -1]

;}};

Leetcode 最小路徑和

題目描述 乙個包含非負整數的 m n 的網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。樣例輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。官方題解 解題思路 1 因為每個網格都有向下或向右2...

Leetcode 最小路徑和

64.最小路徑和 先算第一行從前乙個節點到下乙個節點之和 for int i 1 i grid 0 length i 再算第一列從前乙個節點到下乙個節點之和 for int j 1 j grid.length j 接下來從 1,1 算從上乙個節點到當前節點之和 for int i 1 i grid....

leetcode 最小路徑和

1.動態規劃 對於 i,j 其入口只有 i 1,j 和 i,j 1 兩個,故到達 i,j 的最小路徑為min dp i 1 j dp i j 1 i,j 故狀態轉移方程為 dp i j min dp i 1 j dp i j 1 i,j 但需要注意初始化 對於上邊界,其路徑只能來自於左邊 對於左邊界...