题目描述:
先来按照题目要求画小方格,并且判断有几种走法:下面这几个例子可以很简单的在纸上画出来走的方法
方格规格 | 几种走法 |
---|---|
1×1 | 1 |
1×2 | 1 |
2×1 | 1 |
2×2 | 2(1×2 2×1) |
2×3 | 3(1×3 1×2 2×1) |
… | … |
-
处于2*2的方格的时候,只能向下走一步或者向右走一步,向下走一步就变成了1×2的方格的走法,向右走一步就变成了2×1的方格的走法,两种走法相加就是2×2方格总共的走法。
-
再来分析一个2×3的方格的走法,向右走一步,变成2×2的走法(红色方框),上面分析了2×2的总共的走法,有两种,向下走一步,变成了1×3的方格的走法(绿色方框),显而易见1×3的走法只有一种,所以2×3的走法一共有3种。
-
…
后面的例子也都是这样分析的,由此我们分析得出n×m的走法一共有f(n-1,m)+f(n,m-1)中走法,需要用递归来计算。
public class Main {
public int countWays(int x, int y) {
// write code here
return count(x,y);
}
public int count(int x, int y) {
if (x == 1 || y == 1) {
return 1;
}
return count(x-1,y)+count(x,y-1);
}
}