簡體   English   中英

如何編寫 python 代碼來計算給定數字的所有組合,這些組合可以求和給定數字?

[英]how to write a python code to calculate all the combination of given numbers that can sum up to a given number?

我想編寫一個 python 代碼,該代碼將打印給定數字的所有組合,這些組合可以總和為給定數字,例如,如果你想用 1、2 和 3 組成 6,答案將是:

111111
11112
1113
123
...

將有 24 種組合。 可能嗎?

我假設您允許重復,這與建議的重復答案不同,盡管實際上想法是相同的。 您可以按如下方式使用遞歸(或使用遞歸生成器):

def sum_to(num, parts):
    if num == 0:
        return [[]]
    return [[x, *lst] for x in parts if x <= num for lst in sum_to(num - x, parts)]

output = sum_to(6, [1, 2, 3])
print(len(output))
print(output)

Output:

24
[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 2], [1, 1, 1, 2, 1], [1, 1, 1, 3], [1, 1, 2, 1, 1], [1, 1, 2, 2], [1, 1, 3, 1], [1, 2, 1, 1, 1], [1, 2, 1, 2], [1, 2, 2, 1], [1, 2, 3], [1, 3, 1, 1], [1, 3, 2], [2, 1, 1, 1, 1], [2, 1, 1, 2], [2, 1, 2, 1], [2, 1, 3], [2, 2, 1, 1], [2, 2, 2], [2, 3, 1], [3, 1, 1, 1], [3, 1, 2], [3, 2, 1], [3, 3]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM