数组所有子集的算法

时间:2018-11-01 17:57:06

标签: arrays algorithm sorting subset

我正在寻找一种算法,它将创建数组的所有子集,例如,如果数组为

A = [1, 4, 6]

算法将生成:

[1,4,6,[1,4], [1,6], [4, 6], [1, 4,6]]

注意:我正在寻找有关算法的帮助,而不是某些功能。

1 个答案:

答案 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]))