我想找出非负数的不同组合的数量(可以是任何数字,它不是固定的),使其总数等于所提供的总和。
例如:我有3个数字,我想找到不同的数字组合,使得总和为4. num的值从0开始,没有负数。
对于总和为4的3个数字,组合为
2 0 2
2 2 0
0 2 2
0 1 3
3 1 0
0 3 1
1 0 3
1 3 0
3 0 1
0 0 4
4 0 0
0 4 0
2 1 1
1 2 1
1 1 2
我将此视为一个例子:Finding the total number combinations for an integer using three numbers
但问题是它只使用三个数字。
任何算法或代码都会很有用。感谢。
答案 0 :(得分:5)
您可以将此视为在n个可辨别的罐子中放置难以区分的硬币的方法的数量。 (在示例中,s = 4且n = 3)。
如here所述,即C(n + s-1,s-1),在示例中给出15。
答案 1 :(得分:3)
如果顺序无关紧要且0计数,例如在示例链接中,那么
n=total+1
k=number-1
binomial(k+n-1,k) #combinations whith reptetitions
or
binomial(number+total-1,number-1)
如果您将数字5表示为
1+1+1+1+1
并且必须找到3个整数的总和数 你可以看到你必须在6个计算组合中重复2个切片。