永发信息网

java实现数组的所有组合

答案:5  悬赏:80  手机版
解决时间 2021-05-07 18:24
  • 提问者网友:人傍凄凉立暮秋
  • 2021-05-06 18:05

用java实现一个取数据组的所有组合,

比喻一个数组 int[] array = {1,2,3,4,5}

我输入一个3,它就把此数组当中所有以3个元素组合的数组返回

返回的数组应该是

{1,2,3} {1,2,3} {1,2,5}

{1,3,4} {1,3,5} {1,4,5}

{2,3,4} {2,3,5} {2,4,5}

{3,4,5}

当然出可以其他方式返回,比喻List返回也可,只要能取出组合方式就行

最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-05-06 18:20

细节上需要改进。


import java.util.*;
public class Map {
Vector<int[]> v = new Vector<int[]>();
Vector<Integer> vv = new Vector<Integer>();


Map() {
int[] array = { 1, 2, 3, 4, 5 };
Scanner s = new Scanner(System.in);
int x = s.nextInt();
pro(array, 0, x);
for(int i=0;i<v.size();i++){
int[] r=v.get(i);
for(int j=0;j<r.length;j++){
System.out.print(""+r[j]+",");
}
System.out.println();
}
}


public void pro(int[] a, int start, int n) {
if (n == 0) {
int[] r = new int[vv.size()];
for (int i = 0; i < r.length; i++) {
r[i] = vv.get(i);
}
v.add(r);
return;
}
if (start >= a.length) {
return;
}
for (int i = start; i < a.length; i++) {
vv.add(a[i]);
pro(a, i + 1, n - 1);
vv.remove(vv.size()-1);
}
}


public static void main(String arg[]) {
new Map();
}
}

全部回答
  • 1楼网友:蓝房子
  • 2021-05-06 22:27

不用递归能实现吗?就像人家说的,下次输入4你怎么办

  • 2楼网友:梦中风几里
  • 2021-05-06 22:08

可以不用递归

  • 3楼网友:煞尾
  • 2021-05-06 20:42

去我c02949.blog.163.com

递归,完美输出所有组合.任意多位,任意数,重复晃重重复.

楼上的方法对你这个是最好的,如果变换就很麻烦.

  • 4楼网友:往事埋风中
  • 2021-05-06 19:18
最简单的办法是三层循环
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯