2016-03-29 2 views
-1

I alle Permutationen von 9 Ziffern, wobei jede Ziffer von 1 bis 9 verwendet genau einmal ohne Wiederholungen zu erzeugen versuche. beispielsweise 123456789, 132456789, 987654321 etc .... Der Grund, warum ich diese Frage mit Rekursion getaggt ist, weil ich das ist, glaube, wie ich diese Frage zu lösen, aber ich bin mir nicht sicher, wie dieVersuch 9 Ziffern zu erzeugen, mit jeder eindeutigen Ziffern in Java

in Java zu tun

Das Programm sollte eine Liste von int-Arrays zurückgeben.

List<int[]> list = new ArrayList<int[]>(); 
int[] values = {1,2,3,4,5,6,7,8,9}; 
int count=0; 
int count2=0; 
int count3=1; 

while(count2<9*8*7*6*5*4*3*2) { 
    for(int i =1;i<values.length-1;i++) { 
     if (count<8*7*6*5*4*3*2) { 
      Integer toMove = values[i]; 
      values[i]=values[i+1]; 
      values[i+1]=toMove; 
      count++; 
     } else if (count>=8*7*6*5*4*3*2&&count3<9) { 
      values[0]=1; 
      values[1]=2; 
      values[2]=3; 
      values[3]=4; 
      values[4]=5; 
      values[5]=6; 
      values[6]=7; 
      values[7]=8; 
      values[8]=9; 
      Integer toMove = values[0]; 
      values[0]=values[count3]; 
      values[count3]=toMove; 
      count=1; 
      count3++; 
      i=0; 
     } 

     count2++; 
     list.add(values); 
    } 
+0

Sie haben diese Frage mit Rekursion markiert, aber Ihr Beispiel ist kein rekursiven Algorithmus. Soll es sein? Und sind Sie sicher, wie viele Iterationen Sie wünschen (9!)? – KevinO

+0

Möchten Sie Permutationen generieren? Wikipedia beschreibt einige Algorithmen, um das zu tun. https://en.wikipedia.org/wiki/Permutation#Generation_in_lexicographic_order – SpiderPig

+0

Versuchen Sie, alle Permutationen zu erhalten, oder nur eine Handvoll von 9 Ziffern mit jeweils 0-9 erscheint einmal? Wenn es das letztere ist, erstellen Sie einfach ein Array der Ziffern und mischen Sie es. – pjs

Antwort

0

Hoffnung das ist, was Sie suchen

//Initialize List 
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); 

//Shuffle List  
Collections.shuffle(numbers); 

//Obtain Array 
Integer randomizedArray[] = numbers.toArray(new Integer[0]); 

//Print Array 
System.out.println(Arrays.toString(randomizedArray)); 
+0

Ich versuche, alle Permutationen zu finden, nicht nur eine, so dass diese Methode nicht funktioniert und wenn ich dieses Array einfach nur randomisierte, würde ich einige Arrays bekommen, die die gleichen sind, und ich will das nicht –

+0

Die Logik Shuffle und Array-Erstellung können in eine Methode gerollt und wiederholt aufgerufen werden. Die Zufälligkeit der Zahlen kann über \t Shuffle (Liste Liste, Random rnd) – tmokha

+0

Aber es ist möglich für die zufällige Methode, das gleiche Array mehr als einmal cal, und ich brauche jede Permutation –

Verwandte Themen