8.一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
示例1
输入:1
返回值:1
示例2
输入:4
返回值::5
思路
public int JumpFloor(int target) {
if(target <= 0) return 0;
if(target == 1) return 1;
int count = JumpFloor(target -1) + JumpFloor(target-2);
return count;
}
public int JumpFloor(int target) {
if(target == 1) return 1;
if(target == 2) return 2;
int count = JumpFloor(target -1) + JumpFloor(target-2);
return count;
}
10.矩形覆盖
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?
比如n=3时,23的矩形块有3种覆盖方法:
示例1
输入::4
返回值:5
public int rectCover(int target) {
//2*terget 的大矩形
if(target <= 2) return target;
int i = 1,j = 2;
for(int k = 3; k <= target;k++){
int res = i +j;
i = j;
j = res;
}
return j;//相对于tartget 来说,第target-1种方法
}