我正在寻找一种算法,它将创建数组的所有子集,例如,如果数组为
A = [1, 4, 6]
算法将生成:
[1,4,6,[1,4], [1,6], [4, 6], [1, 4,6]]
注意:我正在寻找有关算法的帮助,而不是某些功能。
答案 0 :(得分:0)
您可以构建基于回溯的解决方案,为给定数组制定所有可能的子序列。共享相同的ideone链接:https://ideone.com/V0gCDX
all = []
def gen(A, idx = 0, cur = []):
if idx >= len(A):
if len(cur): all.append(cur)
return
gen(A, idx + 1, list(cur))
incl = list(cur)
incl.append(A[idx])
gen(A, idx + 1, incl)
def solve(A):
global all
all = []
gen(A)
return all
print(solve([1, 4, 6]))