這一題的概念滿簡單的,主要就是用 DP 的概念來存整個 matrix ,DP 的 matrix 中,存的是要走到那一格,有幾種走法。

除了第一個 column 跟第一個 row 都只有一種走法之外,其他每一格都是上面那一格跟左邊那一格的和(dp[i][j] = dp[i-1][j] + dp[i][j-1])。

用C++實作出來的程式碼如下:

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];
    }
};

results matching ""

    No results matching ""