【发布时间】:2012-03-11 01:41:50
【问题描述】:
我想找出非负数的不同组合的数量(可以是任何数字,它不是固定的),使其总数等于提供的总和。
例如:我有 3 个数字,我想找到不同的数字组合,使得总和为 4。num 的值从 0 开始。没有负数。
对于 3 个和为 4 的数字,组合是
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+0+4, 1+1+2, 5+(-1)+0, 100+(-100)+4....
-
在任何人考虑帮助您之前,您需要证明您已尝试自己解决此问题。
-
答案仍然是无限的。您可以将无数个零添加到总和为目标数的任何其他组合。因此,您最好的选择可能是在内存耗尽时终止的递归解决方案。
-
@lakesh:你对 (2, 1, 1)、(1, 1, 2) 和 (1, 2, 1) 有什么看法?为什么它们无效?