python组合型枚举 的算法模板
时间: 2023-11-15 16:01:33 浏览: 90
第十五届蓝桥杯python组.docx
Python组合型枚举的算法模板如下所示:
引用:组合类枚举:从n中选s个数的所有组合
n = 0
m = 0
def dfs(u : int, s : int, state : int):
if s == m:
for i in range(0 , n):
if state >> i & 1:
print(i + 1, end=' ')
print("")
return
if u == n :
return
dfs(u + 1, s + 1, state + (1 << u))
dfs(u + 1, s, state)
n,m = map(int ,input().split())
dfs(0 ,0 ,0)
其中,n表示总共有多少个数,m表示需要选出多少个数,state表示当前已经选了哪些数。dfs函数是递归实现的,其中u表示当前考虑到第几个数,s表示已经选了多少个数。如果已经选了m个数,则输出当前的组合;如果已经考虑完了所有的数,则直接返回。在dfs函数中,首先考虑选第u个数,然后递归调用dfs函数,继续考虑下一个数;然后不选第u个数,继续递归调用dfs函数,考虑下一个数。
阅读全文