需求:Python3 找出所有相加之和为n的k个组合

问题描述:

Python3 找出所有相加之和为n的k个组合,组合中只允许含有正整数,组合中可以有重复数字,每一项至少为1。

例如:k = 6   n = 25

类似于,把n个球,放到k个盒子中,所有不同的组合方式,每个盒子至少一个球。

代码如下:

def res(k,sums):
    from itertools import combinations,combinations_with_replacement

    x=list(combinations_with_replacement(range(1,9),k))
    result=[num   for num in x if sum(num)==sums]
    return result

print(res(6,25))