劍指offer 矩形覆蓋

2022-07-12 09:51:06 字數 590 閱讀 1195

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

思路:我們記n個2*1小矩形無重疊地覆蓋乙個2*n的大矩陣的方法數為f[n],

當n=0, f[0] = 0

當n=1, f[1] = 1

當n=2,我們可以選擇橫放或者豎放,當豎放時,乙個2*1的小矩形剛好覆蓋大矩形的一列,還剩乙個2*(n-1)的矩形需要覆蓋, 當橫放時,接下來也只能橫放。f[2] = f[2 - 1] + 1

當n=3,當豎放時,我們有f[3 - 1]種方法,當橫放時,有f[3 - 2]種。

於是f[n] = f[n - 1] + f[n -2]

1

class

solution

7 vector v(number + 1, 0

);8 v[1] = 1

;9 v[2] = 2;10

for (int i = 3; i <= number; i++)

13return

v[number];14}

15 };

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