劍指offer10 矩形覆蓋 題解

2022-09-18 06:24:28 字數 858 閱讀 5998

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

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

輸入

4
返回值

5
n=1時,顯然只有一種方法

n=2時,如圖有2種方法

n=3,如圖有3中方法

n=4,如圖有4種方法。

塗掉最後一級矩陣的時候,可以選擇使用橫向完成,也可以使用豎向完成,橫向塗剩下 \(n - 1\) 階,豎向塗剩下 \(n - 2\) 階,可以得出遞推方程為

\[f(n)=f(n-1)+f(n-2)\tag

\]\[f(1)=1,f(2)=2

\]

/**

時間複雜度:o(n)

空間複雜度:o(1)

**/class solution

int a = 1, b = 2, c;

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

return c;}};

劍指offer 10 矩形覆蓋

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

劍指offer 10 矩形覆蓋

題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 對於矩形的覆蓋,2 n大小的矩形,如果第乙個小矩形豎著放,那麼右邊還有n 1個空間來安排放置小矩形 如果第乙個小矩形橫著放,那麼它的下面一定是橫著放到,而右...

劍指offer10 矩形覆蓋

我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?關於分治法 分治法,分而治之。就是將原問題劃分為n個規模較小,結構與原問題類似的小問題進行處理,遞迴地解決這些問題,然後再合併求解的過程。分治法在解決的流程上分為三個步驟 ...