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 我的实施: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 =
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有问题。