【发布时间】:2019-01-19 07:25:04
【问题描述】:
我正在寻找库函数,它返回 k 集中 n 子集的任意组合。例如,我有一个集合 {1,2,3,4,5},我需要包含在这个集合中的 3 个数字的任意组合。顺序无所谓。 所以这个函数应该返回:
[[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5 ], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]
我曾尝试自己写,但没有成功,我放弃了。它仅在我从任何一组中取 3 个数字时才有效。 也许有人知道这个问题的库函数。
【问题讨论】:
-
我认为这可以通过 for 循环实现。不过需要一些时间来制定...
-
不是 IMO 最好的例子,但 rosettacode.org/wiki/Combinations#Java 有一些东西。
-
结合
Arrays.asList、Collections.shuffle和List.subList是一种非常简单的方法——可能不是最有效的,但很容易理解。 -
İ如果您需要计算所有子集,您可以使用组合mathwords.com/c/combination_formula.htm
标签: java math combinations