給定乙個包含非負整數的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 個整數表示矩陣。輸出描述 輸出乙個...