看了题解发现还是个斐波那契数列,递归迭代皆可,但是递归效率太低了可以开个dp数组再递归还行。
最主要是发现这是个斐波那契数列
假设:n块矩形有f(n)种覆盖方法。进行逆向分析,要完成最后的搭建有两种可能。
第一种情况等价于情形1中阴影部分的n-1块矩形有多少种覆盖方法,为f(n-1);
第二种情况等价于情形2中阴影部分的n-2块矩形有多少种覆盖方法,为f(n-2);
故f(n) = f(n-1) + f(n-2),还是一个斐波那契数列
class Solution {
public:
int rectCover(int number) {
if(number == 1) return 1;
if(number == 2) return 2;
int first = 1, second = 2, res;
for(int i = 3; i <= number; ++i){
res = first + second;
first = second;
second = res;
}
return res;
return rectCover(number - 1) + rectCover(number - 2);
}
};