Учитывая массив, я нашел все комбинации подмножеств, которые равны целевой сумме, потому что мне нужен максимально большой массив.
Например, массив [1, 2, 2, 2] для целевой суммы «4» возвращает [[2, 2], [2, 2], [2, 2] ]].
subsets = []
def subset_sum(numbers, target, partial=[]):
s = sum(partial)
if s == target:
subsets.append(partial)
if s >= target:
return
for i in range(len(numbers)):
n = numbers[i]
remaining = numbers[i + 1:]
subset_sum(remaining, target, partial + [n])
subsets.sort()
subsets.reversed()
Как я могу удалить значения, которые когда-то упоминались в списке подмножеств? В приведенном выше примере, как я могу сенокосить только одного [2,2].
А что, показать значения исходного массива, которых нет в этом окончательном списке? В приведенном выше примере [1].
partial=[]
. Если вы можете реорганизовать свой код для возврата кортежей, вы можете вернуть набор кортежей, который удалит дубликаты за вас. - person Patrick Haugh   schedule 05.12.2017