Алгоритм для всех подмножеств массива - PullRequest
0 голосов
/ 01 ноября 2018

Я ищу алгоритм, который создаст все подмножества массива, как если бы массив был

A = [1, 4, 6]

алгоритм сгенерирует:

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

Примечание: мне нужна помощь с алгоритмом, а не с какой-то функцией

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете построить решение на основе обратного отслеживания, чтобы сформулировать все возможные подпоследовательности для данного массива. Совместное использование одной и той же ссылки: 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]))
...