這一題的概念滿簡單的,主要就是用 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];
}
};