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 tunDas 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);
}
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
Möchten Sie Permutationen generieren? Wikipedia beschreibt einige Algorithmen, um das zu tun. https://en.wikipedia.org/wiki/Permutation#Generation_in_lexicographic_order – SpiderPig
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