题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解法:斐波那契数列
n = 1,一种方法
n = 2, 两种方法(横着,竖着)
n = 3, 剩下2*1时, 剩下2*2时
…
n = i,剩下2*i-1时, 剩下2*i-2时
class Solution {
public:
int rectCover(int number) {
if(number<=2) return number;
int a = 1, b = 2;
for(int i=3;i<=number;i++)
{
b = a + b;
a = b - a;
}
return b;
}
};