劍指offer10 矩形覆蓋

2022-07-11 20:54:08 字數 867 閱讀 5919

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

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

輸入       4

返回值   5

遞迴這題就是青蛙跳,「乙隻青蛙一次可以跳上1級台階,也可以跳上2級」,等價於本題矩陣要麼是豎著放的1個,要麼是橫著放的2個

f(n) = f(n-1) + f(n-2); f(1)=1; f(2)=2

#用陣列實現

#-*- coding:utf-8 -*-

class

solution:

defrectcover(self, number):

#write code here

rec=[0,1,2]

while number>=len(rec):

return rec[number]

#動態規劃

#-*- coding:utf-8 -*-

class

solution:

defrectcover(self, number):

#write code here

if(number==1 or number==2 or number ==0):

return

number

a=1b=2

for i in range(3,number+1):

c=a+b

a=bb=c

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個規模較小,結構與原問題類似的小問題進行處理,遞迴地解決這些問題,然後再合併求解的過程。分治法在解決的流程上分為三個步驟 ...