解题思路:
- 本题要求求出路径数量,可以从题目中看出每一个点的路径数量等于他左边和上边点的路径数量之和,所以可以采用动态规划思想,构建备忘录
- 注意:
1.初始化备忘录
2.状态转移方程
class Solution {
public:
// 动态规划,每一步都是由左边的格子和上面的格子路径之和来计算的,而且在[0][j]和[i][0]在边界上的路径为1
int uniquePaths(int m, int n) {
// 创建二维备忘录存储每一个位置的路径数量
vector<vector<int>>vec(m,vector<int>(n));
// 设置初始值
for(int i =0;i<m;++i){
vec[i][0] = 1;
}
for(int j = 0;j<n;++j){
vec[0][j] = 1;
}
// 计算备忘录中的值
for(int i = 1;i<m;++i){
for(int j = 1;j<n;++j){
vec[i][j] = vec[i][j-1] + vec[i-1][j];
}
}
// 返回终点存储的路径数
return vec[m-1][n-1];
}
};