天天看點

python 回溯法 子集樹模闆 系列 —— 5、取物搭配問題```python頭、身、腿3個元素各自的狀态空間沖突檢測套用子集樹模闆測試

有5件不同的上衣,3條不同的褲子,4頂不同的帽子,從中取出一頂帽子、一件上衣和一條褲子作為一種搭配,問有多少種不同的搭配?

換個角度看,現有頭、身、腿三個元素,每個元素都有各自的幾種狀态。

頭元素有['帽1', '帽2', '帽3', '帽4']共4種狀态,身元素有['衣1', '衣2', '衣3', '衣4', '衣5']共5種狀态,腿元素有['褲1', '褲2', '褲3']共3種狀态

從頭開始,自上而下,周遊每個元素的所有狀态。

解的長度是固定的。

這裡特别注意:每個元素的狀态數目不同!!!

套用子集樹模闆即可

'''取物排列問題'''

n = 3 # 3個元素

a = [['帽1', '帽2', '帽3', '帽4'],

['衣1', '衣2', '衣3', '衣4', '衣5'],

['褲1', '褲2', '褲3']]

x = [0]*n # 一個解,長度固定,3元數組

X = [] # 一組解

def conflict(k):

def match(k): # 到達第k個元素

global n, a, x, X

match(0) # 從頭(第0個元素)開始

```

python 回溯法 子集樹模闆 系列 —— 5、取物搭配問題```python頭、身、腿3個元素各自的狀态空間沖突檢測套用子集樹模闆測試