算法与数据结构(不同路径)
题目
思路
其实这道题就是一个简单的动态规划问题,因为机器人只能往右或往下移动,所以一个点的路径种类数就等于它上面点的路径种类数加上它左边点的路径种类数。
我们用f(i)(j)来代表从左上角走到(i,j)的路径数量,对于列为0和行为0的所有点路径数量都是1。
它们只有一种路径到达,将其初始化。
之后利用f[i][j] = f[i-1][j] + f[i][j-1]即可求出每个点的路径数量。
之后返回f[m-1][n-1]就可以知道总共的路径数量。
代码
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> f(m,vector<int>(n));
for(int i =0;i<m;i++)
{
f[i][0] = 1;
}
for(int i =0;i<n;i++)
{
f[0][i] = 1;
}
for(int i =1;i<m;i++)
{
for(int j=1;j<n;j++)
{
f[i][j] = f[i-1][j] + f[i][j-1];
}
}
return f[m-1][n-1];
}
};