我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋乙個2n的大矩形,總共有多少種方法?思路:所得遞推公式和跳台階問題一樣,**也相同比如n=3時,23的矩形塊有3種覆蓋方法:
c++
class
solution
;//0為佔位,1 2 為初始條件,這裡與斐波那契的**不同,見下鏈結
int temp;
for(
int i =
3; i <= number; i++
)return f[number];}
};
python
# -*- coding:utf-8 -*-
class
solution
:def
rectcover
(self, number)
:# write code here
if number <1:
return
0if number ==1:
return
1if number ==2:
return
2#return self.rectcover(number - 1) + self.rectcover(number - 2) #遞迴複雜度太大
temp =
0 fir =
1 sec =
2for i in
range(1
,number -1)
: temp = fir + sec
fir = sec
sec = temp
return temp
類似題目如下:劍指offer:跳台階(c++)
劍指offer:斐波那契數列(c++/python)
劍指offer 矩形覆蓋
我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?觀察題目中的矩形,2 n的,是個長條形。本來腦中想象的是複雜的華容道,但是既然只是簡單的長條形,那麼依然逆向分析。既然是長條形的,那麼從後向前,最後乙個矩形2 2的,只有兩...
劍指Offer 矩形覆蓋
題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 這個也是跳青蛙的變形 但是要自己找出當前的鋪法和以前鋪法的關係 注意到 情況一 當前塊的話可以由上一塊加上當前這一塊的豎著放 情況二 或者是 上上一塊加上兩...
劍指offer 矩形覆蓋
1 題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?2 思路 遞迴呼叫 若不存在小矩形,則返回0 若只存在乙個小矩形,則只有一種方法,返回1 若存在兩個小矩形,則存在兩種方法,返回2 若小矩形的數量大於2,則若...