【发布时间】:2014-12-03 00:49:45
【问题描述】:
我正在尝试创建一个数字列表的所有可能数字组合的子集。这是一个例子:
数字列表:1,2,3,4,5,6
子集(一组 3 个数字):
1,2,3
1,2,4
1,2,5
1,2,6
1,3,4
1,3,5
1,3,6
1,4,5
1,4,6
1,5,6
2,3,4
2,3,5
2,3,6
2,4,5
2,4,6
2,5,6
3,4,5
3,4,6
3,5,6
4,5,6
我很难确定实现此列表的循环算法。我可以看到我需要一个嵌套循环,但逻辑让我无法理解。此示例包含所有可能的 3 个数字组,但这只是一个示例。我需要能够扩展到更大的列表和更多的组。请帮忙!
我是 Java 迷,所以我很欣赏 Java 解决方案,但我很乐意用任何语言甚至伪代码解释。
【问题讨论】:
-
您想要排列还是组合,即数字的顺序是否重要,还是
2,3,5与5,2,3相同? -
欢迎来到stackoverflow!通常,尝试自己开始会获得更好的结果,然后如果遇到困难,请发布到目前为止的代码。这里的人一般都不想为人写新代码。
-
幸运的是,Eric Lippert 最近写了一个关于这样做的优秀系列! Producing Combinations (Part 1 of 5)。他使用 C#,但这些想法应该延续到 Java。