一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python基于回溯法子集樹模板解決數字組合問題實例

Python基于回溯法子集樹模板解決數字組合問題實例

2020-12-05 00:21羅兵 Python

這篇文章主要介紹了Python基于回溯法子集樹模板解決數字組合問題,簡單描述了數字組合問題并結合實例形式分析了Python回溯法子集樹模板解決數字組合問題的具體步驟與相關操作技巧,需要的朋友可以參考下

本文實例講述了Python基于回溯法子集樹模板解決數字組合問題。分享給大家供大家參考,具體如下:

問題

找出從自然數1、2、3、...、n中任取r個數的所有組合。

例如,n=5,r=3的所有組合為:

1,2,3
1,2,4
1,2,5
1,3,4
1,3,5
1,4,5
2,3,4
2,3,5
2,4,5
3,4,5

分析

換個角度,r=3的所有組合,相當于元素個數為3的所有子集。因此,在遍歷子集樹的時候,對元素個數不為3的子樹剪枝即可。

注意,這里不妨使用固定長度的解。

直接套用子集樹模板。

代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
'''數字組合問題'''
n = 5
r = 3
a = [1,2,3,4,5] # 五個數字
x = [0]*n # 一個解(n元0,1數組) 固定長度
X = []  # 一組解
def conflict(k):
  global n, r, x
  if sum(x[:k+1]) > r: # 部分解的長度超出r
    return True
  if sum(x[:k+1]) + (n-k-1) < r: # 部分解的長度加上剩下長度不夠r
    return True
  return False # 無沖突
# 套用子集樹模板
def comb(k): # 到達第k個元素
  global n, x, X
  if k >= n: # 超出最尾的元素
    #print(x)
    X.append(x[:]) # 保存(一個解)
  else:
    for i in [1, 0]: # 遍歷元素 a[k] 的兩種選擇狀態:1-選擇,0-不選
      x[k] = i
      if not conflict(k): # 剪枝
        comb(k+1)
# 根據一個解x,構造對應的一個組合
def get_a_comb(x):
  global a
  return [y[0] for y in filter(lambda s:s[1]==1, zip(a, x))]
# 根據一組解X,構造對應的一組組合
def get_all_combs(X):
  return [get_a_comb(x) for x in X]
# 測試
comb(0)
print(X)
print(get_all_combs(X))

效果圖

Python基于回溯法子集樹模板解決數字組合問題實例

希望本文所述對大家Python程序設計有所幫助。

原文鏈接:http://www.cnblogs.com/hhh5460/p/6920382.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: ai换脸杨颖被啪在线观看 | 美女被扒开屁股进去网 | 精品一区二区三区高清免费不卡 | 99久久精品无码一区二区毛片 | 欧美日韩国产另类一区二区三区 | 手机在线观看伦理片 | 国产成人永久免费视 | 激情文学综合网 | 午夜福到在线4国产 | 国产果冻传媒 | 国产综合社区 | 国产成人免费在线视频 | 1024国产高清精品推荐 | 韩国三级在线 | 香蕉久久夜色精品国产小优 | 欧美成人免费观看bbb | 久久视频在线视频 | 亚洲免费国产 | 2022国产麻豆剧传媒剧情 | 欧美一级特黄特色大片 | 欧美jjvideo | 国产亚洲精品激情一区二区三区 | 香蕉久久一区二区不卡无毒影院 | 黄漫免费观看 | 精品综合久久久久久8888 | 2019国内自拍大神视频 | 亚洲AV无码国产精品色在线看 | 国产精品日本一区二区不卡视频 | 2020年国产精品午夜福利在线观看 | 日本xxxxxl1820| 九九99靖品| 乳女教师欲乱动漫无修版动画3d | 91久久精品视频 | 爽好大快深点一视频 | 无遮挡h肉动漫高清在线 | 嫩草在线观看视频 | 亚洲AV无码乱码国产麻豆穿越 | 久久综久久美利坚合众国 | 69老司机亚洲精品一区 | 欧美老人与小伙子性生交 | 国产精品手机视频一区二区 |