题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路
1 1 1 1 1 用1表示这个位置没有被占用,用2表示这个位置被占用,那么如果有一个箱子排在这个地方,那么有两种情况,2 1 1 1 1和2 2 1 1 1
1 1 1 1 1
2 1 1 1 1 1 1 1 1 1
所以也就可以用f(n)=f(n-1)+f(n-2)来表示。
public class Solution {
public int RectCover(int target) {
//if(target==0)return 1;//当target=0是,输出的是1
int a,b,c;
a=0;
b=1;
c=1;
while(target>0){
c=a+b;
a=b;
b=c;
target--;
}
return c;
}
}