如何从void方法转换为int []方法的置换方法

时间:2014-12-30 22:51:17

标签: java

我需要从方法排列中返回值

public void permute(int []a,int k ) {

if(k==a.length)

  jTextArea1.append(Arrays.toString(a)+"\n");

else
for (int i = k; i< a.length; i++) {
  int temp=a[k];
  a[k]=a[i];
  a[i]=temp;
  permute(a,k+1);
  temp=a[k];
  a[k]=a[i];
  a[i]=temp;
  }
}

所以我需要如何将其转换为此

public int[] permute(int []a,int k ) {
.....

}

for expmle我有这个代码主

public static void main(String[] args) {
Permutation p=new Permutation();






int a[]={1,2,3};
//p.permute(a, 0);

System.out.println((p.permute(a, 0)));

}
工作。

但我需要这样做

public int[] permute(int []a,int k ) {




return 

}

并给出结果

的所有排列

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,并分享了这种解决方法

&#13;
&#13;
  public ArrayList<ArrayList<Integer>> permute(int[] num) {
	ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
 
	//start from an empty list
	result.add(new ArrayList<Integer>());
 
	for (int i = 0; i < num.length; i++) {

		ArrayList<ArrayList<Integer>> current = new ArrayList<ArrayList<Integer>>();
 
		for (ArrayList<Integer> l : result) {
			
			for (int j = 0; j < l.size()+1; j++) {
				
				l.add(j, num[i]);
 
				ArrayList<Integer> temp = new ArrayList<Integer>(l);
				current.add(temp);
 
			
			
				l.remove(j);
			}
		}
 
		result = new ArrayList<ArrayList<Integer>>(current);
	}
 
	return result;
}
&#13;
&#13;
&#13;