题目
我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2* 1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
分析
乍一看有点懵逼,没办法一眼看不出规律,只好用手写下前几个的规律:
由图可知0<=n<=2时,有n种方法;
当n>2时,有f(n)=f(n-1)+f(n-2)种方法;
也就是斐波那契数列,所以代码就很简单了;
代码
class Solution {
public:
int rectCover(int number) {
if(number<=2)
return number;
return rectCover(number-1)+rectCover(number-2);
}
};