2014-12-30 16 views
-3

我需要从方法排列返回值如何从无效的方法转换成int []的方法排列法

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) { 
..... 

} 

为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

如果我通过{1,2,3}返回只是第一个返回 {1,2,3] –

回答

0

所有排列我找到了解决办法和我分享了染料溶液的

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

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