【发布时间】:2011-11-22 05:54:04
【问题描述】:
用户给定一个大小为 N 的整数数组。 打印所有可能的集合,使所有可能的数字之和等于数组中的一个数字。
例子:
数组 A[]= {1,2,3,4,5}
1+2=3..输出:1,2,3
1+3=4..输出:1,3,4
1+4=5..输出:1,4,5
初始设计:
- 取一个数字并将其设置为 SetSum
- 生成除所选数字之外的所有总和;检查公式总和是否与 SetSum 相同
- 打印出满足上述条件的数字。
- 遍历数组并将下一个数字设置为 SetSum
欢迎采用更高效的设计/实施或不同的方法..
【问题讨论】:
-
如果他们问你这个问题,那么不要为他们工作。
-
集合的排列是该集合以某种特定顺序的排列。 (1,2) 和 (2,1) 是 {1,2} 的排列。很难说你被要求找到什么,但这些绝对不是排列。
-
是的..我接受..我有兴趣只找到满足给定条件的一组数字..
-
我认为这个问题类似于Subset sum problem,是NP-complete。而且你的方法没问题。此外,您可以对数组进行排序,并在
SetSum数字前面传递数字。这将减少对函数的一些无用调用。