所以我想打印出来的初始集合加起来21的所有子集到目前为止,我只能想出这个子集和带回溯Python的
def twentyone(array, num=21):
if len(array) == 0:
return None
else:
if array[0] == num:
return [array[0]]
else:
with_v = twentyone(array[1:], (num - array[0]))
if with_v:
return [array[0]] + with_v
else:
return twentyone(array[1:], num)
它确实给了解决方案,但只有第一个。我如何改变它,以便它能给我所有可能的子集。我试过做了一些改变,但它只给我嵌套列表。你能帮忙的话,我会很高兴。
你的回答是对的。然而,如果我有一个输入,如何提高运行时间。下面的一个。我被告知要做简单的修剪。我如何拿出已经存在的解决方案? SEQ = [10] + [22]×50 + [11] 打印(排序(twentyone(SEQ))) @JuniorCompressor – 2015-04-05 11:59:13
我更新了我的答案来处理你给 – JuniorCompressor 2015-04-05 12:06:05
感谢例子。这对我非常有帮助。 @JuniorCompressor – 2015-04-05 22:37:31