劍指Offer 矩形覆蓋 為什麼是斐波那契數列

2021-10-11 21:11:39 字數 1140 閱讀 9362

該博文是對劍指offer——矩形覆蓋問題解法的說明。

題目描述

作為乙個菜雞程式猿,第一次看到這題的時候,我是一臉懵逼的,但是本著學習的態度參考書中解法時,又是一臉懵逼。你要問我為什麼,下面我給你娓娓道來。。。

劍指offer中對這道題的解釋如下:

???什麼????這是斐波那契數列???怎麼來的???

最後通過本菜雞的不懈努力,終於明白了,下面請繼續看我逼逼賴賴。

以大矩形為2x6的情況進行說明,先上圖:

怎麼用2x1的若干矩形覆蓋2x6的大矩形呢?首先看方案1:即第乙個圖(寫了f(4)的那個),該圖方案2x6的2是通過兩個2x1的矩形平著放實現的,兩個2x1的矩形平著放後形成了2x2的矩形,2x6剩下的部分為2x4了,我們用f(4)表示;咱們再看方案2:即第3個圖(寫了f(5)的那個),改圖方案是2x6的2是將2x1的矩形豎著放實現,因此放了乙個後剩下的部分為2x5了,我們用f(5)表示。所以覆蓋2x6的方案數為f(6)=f(5)+f(4)

啊哈~通過上面的分析發現,原來真是斐波那契數列啊!(真是無處不在的斐波那契數列)

下面就給出乙個**(更多**和相關問題可以看我的斐波那契數列博文

public

static

intrectcover

(int target)

int[

] dp =

newint

[target+1]

; dp[0]

=0; dp[1]

=1; dp[2]

=2;for

(int i =

3; i <= target; i++

)return dp[target]

;}

啊哈~就寫到這吧!

我是菜雞程式猿,菜雞程式猿就是我!

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