【问题标题】:listing out all the possible combinations of a integer array列出整数数组的所有可能组合
【发布时间】:2017-11-04 08:22:02
【问题描述】:

问题:找出给定集合的所有可能组合。

解释:

例如:1;

输入

3(整数数组中的元素个数)

0 1 2

预期输出:

(0,1)(0,2)(1,2)

前 2

输入

5(元素数量)

0 1 2 3 4(整数数组)

预期输出

(0,1),(0,2),(0,3)(0,4)

(1,2) (1,3)(1,4) (2,3)(2,4)(3,4)

我的实现:

   static void traverse( int[] ar) {
      int n  = ar.length;
      for(int i=0;i<(n-1);i++) {
       for(int j = (i+1);j<n;j++) {
           System.out.printf("%d %d", i,j);
       }
     }
   }

输出: 0 10 21 2 任何人都可以提出逻辑中的缺陷吗?

【问题讨论】:

  • 你永远不会打印数组的元素。你打印他们的索引。除此之外,输出是正确的:它包含 0 1,然后是 0 2,然后是 1 2,如您所料。当然,它没有括号也没有逗号,因为您不打印任何内容。
  • 它工作正常,但您的格式使输出看起来损坏。将System.out.printf("%d %d", i,j); 更改为System.out.printf("(%d, %d) ", ar[i], ar[j]);
  • 谢谢,这是 System.out.printf 的问题。

标签: java


【解决方案1】:

我假设组合仅限于两个数字,并且我假设顺序并不重要,而是您只是在寻找数字的组合而不是排列。

这是您提交的修改后的代码。

static void traverse(int[] ar) {
    for (int i = 0; i < ar.length - 1; i++) {
        for (int j = i + 1; j < ar.length; j++) {
            System.out.printf("(%d,%d) ", ar[i], ar[j]);
        }
    }
}

这将生成所需的答案。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多