题意:从左上角走到右下角,有多少条不同路径?每次只能往右或者往下走。
分析与思路:首先看第一行的每个位置,都只有一条路走,第一列也是。用动态规划思路,就是每一个终点位置路径都只能由上一个位置或者左一直位置到达(每次只能往右或者往下走一个位置),所以dp[i][j]=dp[i-1][j]+dp[i][j-1].
代码:
class Solution {
public:
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];
}
};