題目描述:
我們可以用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 ...