劍指offer 矩形覆蓋(5)Python實現

2021-08-31 03:53:45 字數 1041 閱讀 5667

題目:我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋乙個2*n的大矩形,總共有多少種方法?

考點:遞迴和迴圈

分析:

文字來自部落格。

所以,f(3)=f(3-1)+f(3-2)

最終,f(n)=f(n-1)+f(n-2)。又是斐波那契數列數列的通式。

# -*- coding:utf-8 -*-

class solution:

def rectcover(self, number):

# write code here

if number < 0:

return 0

elif number < 3:

return number

a = 1

b = 2

temp = 0

for i in range (3, number+1): //同理迴圈的方式進行

temp = a + b

a = b

b = temp

return temp

# -*- coding:utf-8 -*-

class solution:

def rectcover(self, number):

# write code here

if number <=0:

return 0

if number <= 2:

return number

return self.rectcover(number-1) + self.rectcover(number-2)

#同理使用遞迴,顯示錯誤如下

不通過您的**已儲存

執行超時:您的程式未能在規定時間內執行結束,請檢查是否迴圈有錯或演算法複雜度過大。

case通過率為0.00%

劍指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,則若...