python 回溯法 子集树模板 系列 —— 5、取物搭配问题
生活随笔
收集整理的這篇文章主要介紹了
python 回溯法 子集树模板 系列 —— 5、取物搭配问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題
有5件不同的上衣,3條不同的褲子,4頂不同的帽子,從中取出一頂帽子、一件上衣和一條褲子作為一種搭配,問有多少種不同的搭配?
分析
換個角度看,現有頭、身、腿三個元素,每個元素都有各自的幾種狀態。
頭元素有['帽1', '帽2', '帽3', '帽4']共4種狀態,身元素有['衣1', '衣2', '衣3', '衣4', '衣5']共5種狀態,腿元素有['褲1', '褲2', '褲3']共3種狀態
從頭開始,自上而下,遍歷每個元素的所有狀態。
解的長度是固定的。
這里特別注意:每個元素的狀態數目不同!!!
套用子集樹模板即可
代碼
```python
'''取物排列問題'''
n = 3 # 3個元素
頭、身、腿3個元素各自的狀態空間
a = [['帽1', '帽2', '帽3', '帽4'],
['衣1', '衣2', '衣3', '衣4', '衣5'],
['褲1', '褲2', '褲3']]
x = [0]*n # 一個解,長度固定,3元數組
X = [] # 一組解
沖突檢測
def conflict(k):
return False # 無沖突套用子集樹模板
def match(k): # 到達第k個元素
global n, a, x, X
測試
match(0) # 從頭(第0個元素)開始
```
效果圖
本文轉自羅兵博客園博客,原文鏈接:http://www.cnblogs.com/hhh5460/p/6920671.html,如需轉載請自行聯系原作者總結
以上是生活随笔為你收集整理的python 回溯法 子集树模板 系列 —— 5、取物搭配问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python通过future处理并发
- 下一篇: JQuery自定义插件详解之Banner