最小路徑和 動態規劃

2022-06-02 23:06:14 字數 839 閱讀 6474

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

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

示例:

輸入:

[ [

1,3,1

], [

1,5,1

], [

4,2,1]]

輸出:

7解釋: 因為路徑

1→3→1→1→1 的總和最小。

解法一: 動態規劃思想因為最近在做動態規劃的專題,所以用動態規劃的思想來解決本題目:

我們新建乙個dp陣列,用來儲存每走一步的最短路徑,但是最後乙個數值也就是最後乙個元素肯定是有的;

我們利用遞推的公式:

dp(i,j)=grid(i,j)+min(dp(i+1,j),dp(i,j+1))

即可,思想比較特殊,但是找到規律後還是很好理解的.

**

public

int minpathsum(int

grid)

}return dp[0][0

];}

執行結果

以上就是動態規劃的方式解決最短路徑和,在日後開發過程中,當講到一種演算法思想時,可以用於改題目,會增加新解(因本人目前在做動態規劃的專題), 希望對大家有所幫助!!!

動態規劃 最小路徑和

給定乙個只含非負整數的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 計算到達當前位置路徑,是在上一步的基礎上...

動態規劃 矩陣最小路徑和

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 個整數表示矩陣。輸出描述 輸出乙個...