動態規劃 最小路徑和

2021-08-22 18:00:12 字數 832 閱讀 2173

給定乙個只含非負整數的m*n網格,找到一條從左上角到右下角的可以使數字和最小的路徑。

你在同一時間只能向下或者向右移動一步

樣例1:

1 3 1

1 5 1

4 2 1

輸出:7

樣例2:

1 3 5 9 

8 1 3 4 

5 0 6 1 

8 8 4 0 

輸出:12

計算到達當前位置路徑,是在上一步的基礎上的,要使走到當前位置時所需路徑最少,必須保證從上一步走來的時候步數是最小的,而且題目規定了走的方向,所以只需選出兩個方向中較小的乙個並加上當前位置的權值,得出的就是當前位置的最小路徑。

感覺自己說的有點亂,貼下大佬的描述:

使用動態規劃,定義dp[m][n], m ,n 分別代表矩陣的行和列數 dp[i][j] 表示從左上角到矩陣(i,j)位置是的最短路徑和。則可知 到(i,j)位置有兩種情況:1)由(i-1,j)向下走,2)由(i,j-1)向右走,所以dp[i][j]=math.min(dp[i-1][j],dp[i][j-1])+m[i][j];對於dp[0][j] 只能由 dp[0][j-1] 向右走,dp[i][0] 只能由 dp[i-1][0] 向下走。所以 dp[0][j]=dp[0][j-1]+m[0][j], dp[i][0]=dp[i-1][0]+m[i][0].

自己寫的**:

public class solution 

for(int i=1;i}

return dp[arr[0].length-1];

}

最小路徑和 動態規劃

給定乙個包含非負整數的m n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總合為最小.說明 每次只能向下或者向右移動一下.示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7解釋 因為路徑 1 3 1 1 1 的總和最小。解法一 動態規劃思想因為最近在做動態規劃的專題,所以用動態規劃...

動態規劃 矩陣最小路徑和

int min int a,int b int getmin vector map,int n,int m dp 0 0 map 0 0 for int i 1 i m i dp 0 i dp 0 i 1 map 0 i for int i 1 i n i dp i 0 dp i 1 0 map i...

動態規劃 矩陣最小路徑和

演算法專題導航頁面 題目描述 給定乙個 n m 的矩陣 a,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,輸出所有的路徑中最小的路徑和。輸入描述 第一行輸入兩個整數 n 和 m,表示矩陣的大小。接下來 n 行每行 m 個整數表示矩陣。輸出描述 輸出乙個...