我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋乙個2*n的大矩形,總共有多少種方法?
思路:歸納總結,最後發現是遞迴。
(
1)當n=1,
2*1==
>
1種;(
2)當n=2,
2*2==
>
2種;(
3)當n=
3, 2*3
==>
3種;(
4)當n=4,
2*4==
>
5種;……
…………
5)當n=n, 2
*n ==
>
f(n-1)
+f(n-2
).
解析:2*n
放入2*1
矩形時,填充方式有兩種,豎著放和橫著放。當豎著放時,此時剩下的格仔為2*(n-1)
,那麼對應的可能性為f(n-1)
;當橫著放時,左邊的2*2確定了,此時剩下的格仔數量為2*(n-2)
,對應的可能性為f(n-2)
。所以f(n) = f(n-1)+f(n-2)
**:
public
class
solution
else
if(target==1)
else
if(target==2)
else
return sum;
}}
測試程式:
class
solution
else
if(target==1)
else
if(target==2)
else
return sum;}}
public
class
main
}
**好寫,思路不易。
1、參考 follow
劍指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個規模較小,結構與原問題類似的小問題進行處理,遞迴地解決這些問題,然後再合併求解的過程。分治法在解決的流程上分為三個步驟 ...