甜甜的维妮(认证作者)
纳兰辞特邀用户:甜甜的维妮,总共发布文章35篇。
combin是一种数学中的排列组合方法,它可以计算出在n个不同元素中取m个元素的所有可能组合。
例如:有A、B、C三个元素,要求从中取2个元素,那么可能的组合有:AB、AC、BC。
代码示例:
def combin(arr, m):
n = len(arr)
if m >n:
return
# 初始化状态
flag = [0] * n
for i in range(m):
flag[i] = 1
# 核心算法
while True:
print([arr[i] for i in range(n) if flag[i]])
# 找到第一个10组合,将其变成01
pos = -1
for i in range(n-1, -1, -1):
if flag[i] == 1 and flag[i+1] == 0:
pos = i
break
# 如果没有找到,说明已经生成了最后一个组合,退出循环
if pos == -1:
break
# 将pos位置右边的0都变成1,再将pos变成0
flag[pos] = 0
for i in range(pos + 1, n):
flag[i] = 1
if __name__ == '__main__':
arr = ['A', 'B', 'C']
combin(arr, 2)
上一篇: andyou是什么 andyou的翻译