3

我有一個形式爲{{"x"},{"a","b","c"},{"1","2","3"}}的二維數組。爲什麼回溯無法生成所有可能的組合?

我要生成所有組合:

xa1 
xa2 
xa3 
xb1 
xb2 
xb3 
xc1 
xc2 
xc3 

我寫了下面的遞歸代碼來生成組合:

String dim[][] ={{"x"},{"a","b","c"},{"1","2","3"}}; 
void fun(int i,int j,String []metric) 
{ 


    if(i>=dim.length) 
    { 
     for(int k=0;k<i;k++) 
      System.out.print(metric[k]);  
     System.out.println(); 
     return; 
    } 

    if(j>=dim[i].length) 
      return; 
     metric[i] = dim[i][j]; 
    fun(i+1,j,metric); 

    fun(i,j+1,metric); 



} 
public static void main (String[] args) throws java.lang.Exception 
{ 
    // your code goes here 
    String metric[] = new String[20]; 
    Ideone b = new Ideone(); 
    b.fun(0,0,metric); 
} 

而且我得到以下不完整的輸出:

xa1 
xa2 
xa3 
xb2 
xb3 
xc3 

我無法生成所提到的所有組合,也不能找出我在我的邏輯中丟失/錯誤的情況。

回答

3

它,如果你有

fun(i+1,0,metric); 
+0

它可以取代

fun(i+1,j,metric); 

作品!你能詳細說明爲什麼j不工作嗎? – Dubby

+1

因爲你應該遍歷下一個數組的所有元素,而不僅僅是比當前'j'值大的元素。 –

相關問題