矩形覆蓋(python)

2021-08-28 03:22:32 字數 953 閱讀 7657

原始碼

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

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

'''依舊是斐波那契數列

2*n的大矩形,和n個2*1的小矩形

其中 2*target 為大矩陣的大小

有以下幾種情形:

1⃣️target <= 0 大矩形為<= 2*0,直接return 1;

2⃣️target = 1大矩形為2*1,只有一種擺放方法,return1;

3⃣️target = 2 大矩形為2*2,有兩種擺放方法,return2;

4⃣️target = n 分為兩步考慮:

# 豎著擺放

第一次擺放一塊 2*1 的小矩陣,則擺放方法總共為f(target - 1)√√

# 橫著擺放(有上下兩種情況)

第一次擺放一塊1*2的小矩陣,則擺放方法總共為f(target-2)

因為,擺放了一塊1*2的小矩陣(用√√表示),對應下方的1*2(用××表示)擺放方法就確定了,所以為f(target-2)

√ √× ×

target >= 3 f(n) = f(target - 1) + f(targte-2)

'''class solution:

def rectcover(self, number):

# write code here

if number == 0:

return 0

if number == 1:

return 1

if number == 2:

return 2

else:

res = [0, 1, 2]

while len(res) < number:

return res[number]

python 矩形覆蓋問題

題目 思路 遞迴,用列表s來儲存覆蓋方法的個數 n 1時,s 0 1 n 2時,s 1 2 n 3時,此時分為兩個不重複的覆蓋方法 1 2 s 0 s 1 2 1 s 1 1 s 0 減一是為了不計算重複覆蓋方法 n 4時,分為兩種 1 3 s 0 s 2 2 2 s 1 1 s 1 以此類推,可得...

python程式設計 矩形覆蓋

題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?coding utf 8 class solution def rectcover self,number write code here if number 0 r...

矩形覆蓋 python2 7 3

我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 假設n i 表示覆蓋乙個2 i的大矩陣,如果i為奇數那麼n i n i 1 n i 2 如果i為偶數那麼n i 2 n i 2 n i 3 如下 coding utf...