1 3動態規劃值矩陣最小路徑和

2021-10-22 03:30:43 字數 793 閱讀 3471

題目要求:

矩陣大小為m * n,行數m,列數n,需要從左上角走到右下角,每個路徑上的數字代表的是路徑數值,求最小路徑和。

分析:1)同樣以動態規劃來分析,從左上角走到右下角,任取乙個i、j,易得知想要走到該位置,前一步只能是 [i-1][j],或者[i][j-1],那麼動態規劃的通式易得知,

min_sum[i]

[j]= math.

min( min_sum[i-1]

[j]+ a[i-1]

[j], min_sum[i]

[j-1]+

[i][j-

1]

2)空間優化:思路已定,不難得出,在第一行,或者第一列,都只有一條路可選,考慮能否先定義完第一行,再由第一行,一行一行的得出剩下的矩陣值。本題隨意取第一行,如要做到極致壓縮空間的話,則取行列數比較間較小的那個,行數較小則先控制第一行,列數較小先控制第一列。

**實現:

public

intmin_path_sum

(int

m)//如何通過第一行得到一行行得到後面的資料?

//核心:在分析過程中的dp[i-1][j] 和dp[i][j-1]分別是哪個,如何取得?

for(

int i =

1; i < m.length; i ++)}

return m[n]

[m];

}

核心思想:

本題中最重要的思想為:將原本的二維陣列壓縮為一維陣列,這種思想幾乎可用於所有動態優化中空間壓縮問題。

動態規劃 矩陣最小路徑和

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

矩陣的最小路徑和 動態規劃

題目描述 給定乙個 n m 的矩陣 a,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,輸出所有的路徑中最小的路徑和。示例 1,3,5,9 8,1,3,4 5,0,6,1 8,8,4,0 返回值 備註 1 n,m 2000 1 arri,j 100 我的...