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