题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
思路
-
当n=1时,只能竖着覆盖,f(1)=1;
-
当n=2时,既可以横着覆盖,也可以竖着覆盖,f(2)=2;
-
当n=N时,只需要考虑第一块如何覆盖即可,详见下图:
简单递归
class Solution {
public:
int rectCover(int number) {
if(number==0||number==1||number==2) return number;
int a=0,b=1,c=2;
for(int i=3;i<=number;++i)
{
a=b;
b=c;
c=a+b;
}
return c;
}
};