2014-12-30 15 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; 
 
}