給定乙個包含非負整數的 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 但需要注意初始化 對於上邊界,其路徑只能來自於左邊 對於左邊界...