本题源自leetcode 62
思路:动态规划
1 只能向下或者向右走。所以当在i=0 或者 j = 0时 等于1
2 dp[i] [j] = dp[i-1][j] + dp[i][j-1];
代码:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m,vector<int>(n,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];
}
代码2;
int uniquePaths(int m, int n) {
int total = m + n -2; //一共要走的步数
int down = m - 1; //向下要走的步数
double res = 1;
for(int i = 1 ; i <= down; i++){
res =res * (total - down + i) / i;
}
return (int)res;
}