10 矩陣覆蓋 劍指offer Python2 7

2021-08-31 09:31:06 字數 815 閱讀 6434

矩陣覆蓋

題目描述

我們可以用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...