LeetCode 62 不同路徑
阿新 • • 發佈:2020-07-24
題目描述連結:https://leetcode-cn.com/problems/unique-paths/
解題思路:筆者這裡採用動態規劃(當然也還有其它的多種方法能夠解決此題)進行求解,即使用dp陣列記憶每個的不同路徑數。
(1)確定狀態:採用dp[i][j]來儲存移動到(i,j)網格的路徑數。
(2)動態轉移方程的求解:同樣由於每次只能向右或向下移動,因此除了最上邊和最左邊的網格,其餘網格只能從其上邊網格或者左邊網格移動過來。因此得出狀態轉移方程為:
dp[i][j]=dp[i-1][j]+dp[i][j-1]。
(3)確定邊界問題:由於每次只能向右或向下移動,因此最上邊和最左邊的方案數都為1。
接下來根據分析進行程式設計求解即可,LeetCode參考如下:
class Solution { public: int uniquePaths(int m, int n) { //動態規劃求解: int dp[m][n]; for(int i=0;i<m;++i){ dp[i][0]=1; } for(int j=0;j<n;++j){ dp[0][j]=1; } for(int i=1;i<m;++i){ for(int j=1;j<n;++j){ dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } return dp[m-1][n-1]; } };