不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~
62.不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
示例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);
}
}