劍指offer JZ10矩形覆蓋

2021-10-12 21:50:55 字數 1040 閱讀 3163

題目描述:

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

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

思路:

n=4時的情況:

如果到這裡,還沒有發現規律怎麼辦呢?

那我們就再分析以下,從n=3到n=4,怎麼來的呢?

這裡有2種情況:

直接在n=3的情況下,再後面中新增乙個豎著的。這個很顯然成立,有3種情況

然後橫著的顯然能新增到n-2的情況上,也就是在n=2後面,新增2個橫著的。有2種情況

通過以上分析,發現剛好和圖中的個數一樣。

所以總結:f [n]表示2*n大矩陣 的方法數。

可以得出:f[n] = f[n-1] + f[n-2],初始條件f[1] = 1, f[2] =2

所以**可用遞迴,記憶遞迴,和動態規劃和遞推

源**:

public class solution 

if(target==1)

if(target==2)

return rectcover(target-1)+rectcover(target-2);}}

《劍指offer》JZ10矩形覆蓋

我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?解析 不會,檢視解析後 迭代法 矩形2 1是什麼樣的 兩行一列 矩形1 2是什麼樣的 一行兩列 2 n是兩行n列 那麼我們可以設定最後一列為2 1時 那麼前邊的擺放方法為f...

10 矩形覆蓋(劍指offer)

10.矩形覆蓋 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?1.思路 以2x8的矩形為例。示意圖如下 我們先把2x8的覆蓋方法記為f 8 用第乙個1x2小矩陣覆蓋大矩形的最左邊時有兩個選擇,豎著放或者橫著放。當豎著放...

劍指offer 10 矩形覆蓋

題目 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 斐波那契數列的變種,為什麼是斐波那契數列的變種?首先我們 認為小矩形為n的時候的總數是n,而那麼根據組合數學裡的加法原理,我把此題分為兩類,第一類就是小矩形1 ...