LeetCode-62-不同路徑

小pig飼養員發表於2020-12-23

剛剛學習動態規劃,練練手

題目描述

在這裡插入圖片描述
在這裡插入圖片描述

解法 DP

1.含義:dp[ i ][ j ] : 機器人 從起始點到dp[ i ][ j ] 有多少種路徑。
2.方程推導:每次只能通過點(i -1, j)往下走或者點(i,j - 1)往右走到達(i , j),所以得到dp方程

 dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

3.初始值:dp[ 0 ][ m ]和dp[ n ][ 0 ] (m,n∈ N)不能通過dp方程推導,容易得到初始值全都是1:只有一直往下走或者一直往右走可以得到。
程式碼

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> dp (m,vector<int>(n,0));
        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];
    }
};

相關文章