Java 列出整数数组的所有可能组合

Java 列出整数数组的所有可能组合,java,Java,问题:找到给定集合的所有可能组合 说明: 例:1 输入 3整数数组中的元素数 0112 预期产出: 0,10,21,2 例2 输入 5元件数量 0 1 2 3 4整数数组 预期产量 0,1,0,2,0,30,4 1,2 1,31,4 2,32,43,4 我的实施: static void traverse( int[] ar) { int n = ar.length; for(int i=0;i<(n-1);i++) { for(int j =

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

说明:

例:1

输入

3整数数组中的元素数

0112

预期产出:

0,10,21,2

例2

输入

5元件数量

0 1 2 3 4整数数组

预期产量

0,1,0,2,0,30,4

1,2 1,31,4 2,32,43,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
有人能指出逻辑中的缺陷吗?

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

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

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]);
        }
    }
}

这将生成所需的答案。

您永远不会打印数组的元素。你可以打印他们的索引。除此之外,输出是正确的:它包含0 1,然后是0 2,然后是1 2,正如您所期望的那样。当然,它没有括号或逗号,因为您不打印任何内容。它工作正常,但您的格式设置使输出看起来不完整。更改系统输出打印F%d%d,i,j;到System.out.printf%d,%d,ar[i],ar[j];谢谢,建议的System.out.printf有问题。