題目描述
我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
解題思路
依舊是斐波那契數列
2n的大矩形,和n個21的小矩形
其中target*2為大矩陣的大小
有以下幾種情形:
- target <= 0 大矩形為<= 2*0,直接return 1;
- target = 1大矩形為2*1,只有一種擺放方法,return1;
- target = 2 大矩形為2*2,有兩種擺放方法,return2;
- target = n 分為兩步考慮:
代碼實現
class Solution {
public:int rectCover(int number) {if(number <0 )return 0; if(number*2 == 2)return 1;if(number*2 == 4)return 2;if(number*2 > 4)return rectCover(number-1)+rectCover(number-2);}
};