问题描述:
有一个X*Y的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。
请设计一个算法,计算机器人有多少种走法
给定两个正整数int x,int y,请返回机器人的走法数目,保证x+y小于等于12
分析:
我们一开始可以画出一个1 * 1的方格,那么很容易观察得到只有一种走法,我们可以画出1 * 2, 2 * 1, 2 * 2的方格...
1 * 1: 一种走法
1 * 2:一种走法
2 * 1:一种走法
2 * 2: 两种走法
当处于2 * 2的方格的时候可以往右走一个方格,那么此时处于两行一列的状态,也可以往下走一个方格,那么处于一行两列的情况,那么1 * 2与2 * 1的走法我们是知道的,所以把这两种走法加起来就得到了2 * 2 方格的走法
代码:
import java.util.*;
public class Robot {
public int countWays(int x, int y) {
if(x==1 || y==1){
return 1;
}
return countWays(x-1,y)+countWays(x,y-1);
}
}