题目描述
我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?
比如n=3时,2x3的矩形块有3种覆盖方法:
解题思路
如图,设2xn的矩形有An种方法,可见An=An-1+An-2:
所以本质上这道题还是关于求Fibonacci数列。
实现代码
class Solution {
public:
int rectCover(int number) {
int* data=new int[number];
data[0]=1;
data[1]=2;
for(int i=2;i<number;i++)
data[i]=data[i-1]+data[i-2];
return data[number-1];
}
};