问题:找到给定集合的所有可能组合。
说明:
Ex:1;
输入
3(整数数组中的元素数量)
0 1 2
预期产出:
(0,1)(0,2)(1,2)
Ex 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)
我认为这种组合仅限于两个数字,而且我认为顺序并不重要,而是你只是在寻找数字组合而不是排列。
所以这里是您提交内容的修改后的代码。
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]);
}
}
}
这将产生所需的答案。