1. 程式人生 > 實用技巧 >LeetCode 62 不同路徑

LeetCode 62 不同路徑

題目描述連結: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]; } };