所以我想打印出來的初始集合加起來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