一.题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
二.代码(C++)
class Solution {
public:
int rectCover(int number) {
vector<int> v(number+1);
if(number<=2)
return number;
v[0] = 0;
v[1] = 1;
v[2] = 2;
for(int i=3;i<=number;i++)
{
v[i] = v[i-1]+v[i-2];
}
return v[number];
}
};
三.提交记录
四.备注
找规律的题,斐波那契数列。
注意如果直接递推,会有大量的重复运算,因此建立数组,用空间换时间。