def com(arr, n, k, vis, cur): # cur表示剩下可选的元素范围为cur~n
if len(vis) == k:
print(vis)
return # 剪枝1
if n-cur + len(vis) < k: # 剪枝2
return
for i in range(cur, n): # 关键点1,从剩下可选范围内增加元素
vis.append(arr[i])
com(arr, n, k, vis, i+1) # 关键点2:为了保证顺序,当前选中元素左边的元素不再选了
vis.remove(arr[i])
if __name__ == '__main__':
arr = ['A', 'B', 'C', 'D', 'E']
n = len(arr)
k = 3
vis = []
cur = 0
com(arr, n, k, vis, cur)
深度优先搜索-组合问题
猜你喜欢
转载自blog.csdn.net/ten_sory/article/details/108470782
今日推荐
周排行