题目描述:
我们可以用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;
return Fib1(number);
}
int Fib1(int number){
int minus1=2;
int minus2=1;
int Fn=0;
for(int i=3;i<=number;i++){
Fn=minus1+minus2;
minus2=minus1;
minus1=Fn;
}
return Fn;
}
};