题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
题目分析:对于这种题型我们可以采取找规律的方法来解答,显然F(0)=0,F(1)=1,F(2)=2,F(3)=3,那么F(4)=?我们可以试着画一下:
显然只有以上5种覆盖方案,所以F(4)=5,我们已经可以观测到规律了,没错,又是斐波那契数列,所以我们可以推出F(5)=8,小伙伴们可以去画一下验证。
具体代码:
class Solution {
public:
int rectCover(int number) {
if(number <= 2)
return number;
else
return rectCover(number-1)+rectCover(number-2);
}
};