NC59 矩陣的最小路徑和

2021-10-11 02:25:13 字數 629 閱讀 7419

給定乙個 n * m 的矩陣 a,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,輸出所有的路徑中最小的路徑和。

首先,拿到這道題我的第一思路是dfs,但是dfs會有很多重複計算,因此可以用備忘錄優化,而往往這類問題都可以用動態規劃來解決

那麼這個動態規劃問題的狀態轉移方程是什麼呢?

狀態很好看出來,就是在矩陣中的位置,看題意從坐上角開始每次只能向右或者向下走,這就是狀態轉移方程,即每乙個矩陣中位置只能從左或者上轉移過來

dp[i][j]表示矩陣第i行,第j列的最小路徑和

狀態轉移方程為:dp[i][j] = min(dp[i][j-1], dp[i-1][j]) + matrix[i-1][j-1]

為了處理邊界條件,這裡用了乙個小技巧,將矩陣向左向上分別擴張了一格,填充為int_max

**如下:

class

solution

return dp[m]

[n];}}

;

矩陣的最小路徑和

準備校招的!這些是一本書的筆記 程式設計師 面試指南 it名企演算法與資料結構題目最優解 左程雲 給定乙個矩陣m,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和 舉例 如果給定的m如下 135 9 813 4 506 1 8...

矩陣的最小路徑和

給定乙個矩陣m,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和。方法一 遞迴 coding utf 8 defsolution m,l n l m 0 0 if len m 1 and len m 0 1 return l ...

矩陣的最小路徑和

題目 給定乙個矩陣m,從左上角開始每次只能向右或者向下走,最後達到右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和。舉例 給定的m如下 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 路徑1,3,1,0,6,1,0是所有路徑中路徑和最小的,所以返回12。...