日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python 回溯法 子集树模板 系列 —— 5、取物搭配问题

發布時間:2025/7/14 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

if k >= n: # 超出最尾的元素print(x)#X.append(x[:]) # 保存(一個解) else:for i in a[k]: # 直接a[k],若間接則range(len(a[k]))。 遍歷第k個元素的對應的所有選擇狀態,不同的元素狀態數目不同x[k] = iif not conflict(k): # 剪枝match(k+1)

測試

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

```

效果圖

本文轉自羅兵博客園博客,原文鏈接:http://www.cnblogs.com/hhh5460/p/6920671.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的python 回溯法 子集树模板 系列 —— 5、取物搭配问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。