LeetCode:62.不同路径

原题链接

不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~

62.不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
LeetCode:62.不同路径

示例1:

输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1.向右 -> 向右 -> 向下
2.向右 -> 向下 -> 向右
3.向下 -> 向右 -> 向右

示例2:

输入: m = 7, n = 3
输出: 28

解题思路:

利用深度优先遍历
递归实现
因为机器人只能够向右或者向下
所以递归时应为i+1(向下走)
j+1(向右走)
step记录步数
成功步数应为(m+n-2)
如果step>(m+n-2),不符题意
如果遍历i=m-1,j=n-1,表明到达终点
sum++

代码:

/**
 *作者:魏宝航
 *2020年11月27日,下午21:08
 */
class Solution {
    int sum=0;
    int m1,n1;
    public int uniquePaths(int m, int n) {
        m1=m;
        n1=n;
        dfs(0,0,0);
        return sum;
    }
    public void dfs(int i,int j,int step){
        if(i==m1||j==n1||step>(m1+n1-2)){
            return;
        }
        if(i==m1-1&&j==n1-1){
            sum++;
            return;
        }
        dfs(i+1,j,step+1);
        dfs(i,j+1,step+1);
    }
}
上一篇:序列号生成的另一种玩法--62进制如何玩?


下一篇:62.《关于ElementUI中confirm确认弹窗的封装整理》