题目
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
代码
class Solution
{
public:
int rectCover(int number)
{
if(number <= 0)
{
return 0;
}
if(number == 1)
{
return 1;
}
if(number == 2)
{
return 2;
}
int f1 = 1;
int f2 = 2;
int f3 = 0;
for(int i = 3; i <= number; i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
};
运行结果
运行时间:3ms
占用内存:480k
解题思路
本质还是斐波那契数列,注意不使用数组的话可能会因为输入的 number 太大越界。