欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

62. 不同路径

程序员文章站 2022-04-17 13:21:56
...

 

62. 不同路径

 

62. 不同路径


 动态规划

class Solution {
    

public:
    int uniquePaths(int m, int n) {

        if(m==0||n==0)return 1;
        if(m==0&&n==0)return 0;
        //用二维数组存储到达某点的路径数
        //初始化为1,因为第一行,第一列默认就是1,这样省区赋值了
        vector<vector<int>>res(m,vector<int>(n,1));
        //从res[1][1]开始考虑
        for(int i=1;i<m;i++)
        {
            for(int j=1;j<n;j++)
                //当前值为左边,和上边的和
                res[i][j]=res[i][j-1]+res[i-1][j];
        }   
        return res[m-1][n-1];
    }
};

 回溯法,超时

class Solution {
    
    void helper(int m, int n,int &res,int x,int y)
    {
        if(x==m&&y==n)
        {
            res++;
            return;
        }
        for(int i=0;i<2;i++)
        {
            if(i==0&&y+1<=n)
            {
                helper(m,n,res,x,y+1);
            }
            else if(i==1&&x+1<=m)
            {
                helper(m,n,res,x+1,y);
            } 
        }
    }
public:
    int uniquePaths(int m, int n) {

        if(m==0||n==0)return 1;
        if(m==0&&n==0)return 0;
        //表示有多少条路径
        //如果是定义的全局变量或者静态变量,未初始化的话就是0.如果是局部变量,那就是以前残留在堆栈里的随机值
        int res=0;
        helper(m,n,res,1,1);
        return res;
    }
};

 

相关标签: 算法题