【问题标题】:Generating nCr combinations of given set in java [closed]在java中生成给定集合的nCr组合[关闭]
【发布时间】:2012-08-14 12:24:16
【问题描述】:

我想要生成给定集合的 nCr 组合的 java 实现。 例如,如果设置是 {"java","php",".net","python"} 程序应该返回给定集合的所有可能的 nCr 集合。

【问题讨论】:

  • 这是作业吗?如果是,请重新标记它。首先,您应该让我们知道您对此做了什么?

标签: java combinations ncr


【解决方案1】:

适应Gosper's hack,这可以达到 n = 64。

List<String> inputs;
List<List<String>> ncr = new ArrayList<List<String>>();
for (long x = (1 << r) - 1; (x >>> r) == 0;) {
  // x contains a 1 bit for each input we should choose;
  // iterate over the 1 bits of x
  long y = x;
  List<String> combination = new ArrayList<String>();
  for (int i = Long.numberOfTrailingZeros(y);
       y != 0; i = Long.numberOfTrailingZeros(y)) {
    combination.add(inputs.get(i));
    y &= ~(1 << i);
  }
  long u = x & -x;
  long v = u + x;
  x = v + ((v ^ x) / u) >>> 2;
}

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多