描述
一个机器人在m×n大小的地图的左上角(起点)。机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?
解题思路
先分析下,看下有没有什么规律,把表格以坐标形式记录
从开头到第一行第二个:(1,1)>(1,2) 1种
从开头到第二行第一个:(1,1)>(2,1) 1种
从开头到第一行第三个:(1,1)>(1,2) >(1,3) 1种
从开头到第三行第一个:(1,1)>(2,1) >(3,1) 1种
从开头到第二行第二个:(1,1)>(1,2)>(2,2)、(1,1)>(2,1)>(2,2) ....
开头到每个格子的不同方式如下:
这时候可以观察出结果点的方式=结果点横坐标-1+结果点纵坐标-1的方式合,因此可以使用递归来完成
public int uniquePaths (int m, int n) {
if(m==1||n==1){
return 1;
}
return uniquePaths(m,n-1)+uniquePaths(m-1,n);
// write code here
}