矩形覆蓋問題(方法很簡單)

2021-10-03 16:46:51 字數 389 閱讀 6740

問題:

用2×1的小矩形去填充2×n的矩形,問共有多少種填充的方法?

分析:問題的本質是向2×n的矩形框種放小矩形。想讓每次放入的都能夠將框的長填充滿,只有兩種放入方式:

(1)僅放入乙個。

(2)放入由兩個湊成的2×2的小矩形。

所以我們仍然可以用二叉樹求解。

既我們的初始節點為5(假設n=5),左右子節點則為4、3,後續子節點為3和2、2和1,依次類推。

綜上所述,易知符合斐波拉契數列,即f(n)=f(n-1)+f(n-2)。

推廣:m×1的小矩陣填充2×n的矩陣,分析思路如上,只不過(2)中變為由m個湊成m×m的小矩形。

所以f(n)=f(n-1)+f(n-m)(n>m)。

**使用簡單的斐波拉契遞迴即可實現。

矩形覆蓋問題

問題描述 用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。現在問用8個2 1的小矩形無重疊地覆蓋乙個2 8的大矩形,總共有多少種方法?矩形如下 分析 我們可以把2 8的覆蓋方法記為f 8 用第乙個1 2的矩形去覆蓋大矩形的最左邊時有兩個選擇,豎著放或橫著放。如果豎著放,那麼右邊還剩2 7的矩形區域,這...

矩形覆蓋問題

我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?這種題,可以借鑑動態規劃的思路分析問題。假設現在n 8 那要求解的問題就是 f 8 如果豎著放舉行,那就剩下了 2 7 的舉行,也就是 f 7 如果橫著放,那就剩下了 2 ...

python 矩形覆蓋問題

題目 思路 遞迴,用列表s來儲存覆蓋方法的個數 n 1時,s 0 1 n 2時,s 1 2 n 3時,此時分為兩個不重複的覆蓋方法 1 2 s 0 s 1 2 1 s 1 1 s 0 減一是為了不計算重複覆蓋方法 n 4時,分為兩種 1 3 s 0 s 2 2 2 s 1 1 s 1 以此類推,可得...