题目:https://leetcode-cn.com/problems/unique-paths/
代码:
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>>dp(n, vector<int>(m, 0));
//对于第0行和第0列都只有一种走法
for(int i = 0; i < m;i++) dp[0][i] = 1;
for(int i = 0; i < n;i++) dp[i][0] = 1;
//到达(i, j)位置只能从(i, j - 1)(i - 1, j)两个位置向右和向下。
for(int i = 1; i < m;i++){
for(int j = 1;j < n;j++){
dp[j][i] = dp[j - 1][i] + dp[j][i - 1];
}
}
return dp[n - 1][m - 1];
}
};
思路:动态规划的思想,dp[i][j]的意义是从(0, 0)到达(i, j)这个点的路径总数是多少。由于只能向下以及向右移动,所以dp[i][j]这个状态只能从dp[i - 1][j] 和 dp[i][j - 1]到达