C++零基础算法100题 - 路径的数目

207 阅读1分钟

题目描述

image.png

解题思路

  1. 首先我们得到m和n
  2. 我们构造一个有m和n个元素的二维数组
  3. 我们双重for循环遍历这个二维数组
  4. 如果说要到[1][1]这个位置的话,那么只有一种走法
  5. 如果说是要到i=1的位置的话,那么我们只需要加上左边那个格子到达的距离就好了
  6. 如果说我们要到j=1的位置的话,那么我们加上上面那个格子到达的距离就好了
  7. 否则我们加上到上面的距离和到左边的距离
  8. 返回f[m][n]

代码实现

class Solution {
public:
    int uniquePaths(int m, int n) {
        int i,j;
        int f[110][110];
        for(int i=1;i<=m;++i){
            for(int j=1;j<=n;++j){
                if(i==1&&j==1){
                    f[i][j]=1;
                }else if(i==1){
                    f[i][j]=f[i][j-1];
                }else if(j==1){
                    f[i][j]=f[i-1][j];
                }else{
                    f[i][j]=f[i-1][j]+f[i][j-1];
                }
            }
        }
        return f[m][n];
    }
};