题目链接
题目描述
我们可以用 21 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 21 的小矩形无重叠地覆盖一个 2*n 的大矩形,总共有多少种方法?
该问题的递推公式如下:
class Solution {
public:
int rectCover(int number) {
if(number<3)
return number;
int a1=1,a2=2,tmp;
for(int i=2;i<number;i++){
tmp = a2;
a2 = a1+a2;
a1 = tmp;
}
return a2;
}
};
//递归法,不推荐 耗时长
class Solution {
public:
int rectCover(int number) {
if(number < 3)
return number;
return rectCover(number - 2)+rectCover(number - 1);
}
};
- 时间复杂度:O(N)
- 空间复杂度:O(1)