【发布时间】:2010-05-06 06:58:41
【问题描述】:
我想根据数字的起始列表有效地生成唯一的数字组合列表。
示例开始 list = [1,2,3,4,5] 但算法应该适用于 [1,2,3...n]
result =
[1],[2],[3],[4],[5]
[1,2],[1,3],[1,4],[1,5]
[1,2,3],[1,2,4],[1,2,5]
[1,3,4],[1,3,5],[1,4,5]
[2,3],[2,4],[2,5]
[2,3,4],[2,3,5]
[3,4],[3,5]
[3,4,5]
[4,5]
注意。我不想要重复的组合,尽管我可以接受它们,例如在上面的示例中,我真的不需要组合 [1,3,2] 因为它已经显示为 [1,2,3]
【问题讨论】:
-
这看起来像是家庭作业,所以我将提供问题而不是答案:你知道 powerset 有多少成员吗? (请注意,如果它打算成为 powerset,那么您的列表是不完整的)这个数字是否暗示了一种枚举它们的方法? 大量提示:二进制
-
不,不是家庭作业。这个例子是从我实际做的事情中简化的。这些数字是具有“数量”属性的对象,我想对每个可能的组合的数量求和,然后选择使用最多对象的组合,其中数量的总和在其他一些边界内,例如 > x
-
与幂集相比,您的示例结果缺少空集、包含 4 个元素的 5 个子集、包含所有 5 个元素的子集以及集合 [2,4,5]。跨度>
标签: algorithm powerset superset