【发布时间】:2010-04-09 16:19:20
【问题描述】:
编程挑战:给定一组整数 [1, 2, 3, 4, 5] 我想在 Java 中以 升序 生成所有可能的 k 组合强>;例如
[1], [2], [3], [4], [5], [1, 2], [1, 3] ... [1, 2, 3, 4, 5]
生成所有组合然后对它们进行排序的递归解决方案相当容易,但我想有一种更有效的方法可以消除对额外排序的需求。
【问题讨论】:
-
发布一些代码?根据您的实现方式,它可能只需要对您已有的内容进行少量修改。例如,您正在使用堆栈,对吗?在每个递归步骤中,从 stack[recursive step - 1] + 1 而不是从 0 开始迭代。
-
如果我发布一些代码,它将破坏编程挑战:-)
-
很抱歉,但这并不是什么大挑战 :)。我已经为高中 CS 写了数百次。
-
如果您使用堆栈(如您所建议的那样),结果将不会按大小升序排列。
-
@IVlad,当你这样说时,听起来你每次都必须从头开始:P