劍指offer53 矩形覆蓋

2021-10-06 14:29:02 字數 708 閱讀 4941

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

比如n=3時,2*3的矩形塊有3種覆蓋方法:

實質上是斐波那契數列的思想。

第乙個填滿,即豎著放的時候,還剩下f(n-1)種放法。

第乙個橫著放的時候,即兩個橫著放的時候,還剩下f(n-1)種放法。

因此,有f(n)=f(n-1)+f(n-2),那麼也就需要知道n=1以及n=2時候有幾種放法,當n=1時,只有一種放法,n=2時,有兩種方法。

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

class

solution

:def

rectcover

(self, number)

:# write code here

if number ==0:

return

0if number ==1:

return

1if number ==2:

return

2 a =

1 b =

2for i in

range(3

,number +1)

: b = a + b

a = b - a

return b

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