题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
示例1
输入
4
返回值
5
手算几个数找规律:1,2,3,5,8,…
f[i]=f[i-1]+f[i-2]
class Solution {
public:
int rectCover(int number) {
if(number==0||number==1||number==2) return number;
long long x=1,y=2;
number-=2;
while(number--)
{
y+=x;x=y-x;
}
return y;
}
};