矩陣覆蓋
題目描述
我們可以用2x1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2x1的小矩形無重疊地覆蓋乙個2xn的大矩形,總共有多少種方法?
思路
將2xn的覆蓋方法記為f(n)。
用第乙個2x1的矩形去覆蓋大矩形的最左邊時有兩種選擇:
橫著放和豎著放。橫著放的時候,左下角必須橫著放2x1小矩形,右邊還剩下2x(n-2)的區域,有f(n-2)種覆蓋方法;
豎著放的時候,右邊還剩下2x(n-1)的區域,有f(n-1)種覆蓋方法。所以f(n)=f(n-1)+f(n-2)
python2.7編寫
class solution:
def rectcover(self, number):
f,g = 1,2
if number <= 0:
return 0
if number == 1:
return 1
elif number == 2:
return 2
else:
for i in range(3, number+1):
f,g = g, f + g
return g
寫在後面
這幾道題的思路解法大致相同,供參考
7.斐波那契數列-劍指offer-python2.7
8.跳台階-劍指offer-python2.7
9.**跳台階-劍指offer-python2.7
劍指OFFER 10矩陣覆蓋
我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?這道題的要點就是對於題幹的理解和轉換,可以看到大矩形的行上的長度是固定的 2 唯一的變化在於列上的長度 n 而列上的填充方式 1.2 1的小矩陣豎著去覆蓋 相當於前進一格 ...
劍指offer 10矩陣覆蓋
0.簡介 本文是牛客網 劍指offer 刷題筆記,筆記索引鏈結 1.題目 用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?2.思路 2 1的矩陣覆蓋2 8的矩陣的方法f 8 用第乙個1 2矩陣覆蓋2 8矩陣的最左邊時有豎著或橫著...
劍指offer 矩陣覆蓋
我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?使用dp,當n時,選著豎著放乙個,那麼後面的可能性為f n 1 選擇橫著放乙個,那麼要佔兩個位置,後面的可能性為f n 2 故f n f n 1 f n 2 f 1 1,f...