Permutationen Rekursion
Habe ich eine Zuweisung: Benutzer gibt einen String ein, z.B. ABCD und das Programm hat heraus zu geben, alll die Permutationen.
Ich möchte nicht den ganzen code nur ein Tipp. dies ist, was ich habe, so weit in thery habe ich nichts umgesetzt.
Wobei ABCD ein Beispiel:
Holen Fakultät der Länge der Zeichenfolge in diesem Fall 4! = 24.
24/4 = 6, Also den ersten Buchstaben zu ändern hat, nach 6. so weit so gut.
als Fakultät der übrigen Briefe, die drei 3! = 6.
6/3 =2 2 stellen für jeden Brief. von hier aus weiß ich nicht, wie kann es weiter zu füllen, 24 stellen.
Mit diesem Algorithmus werde ich alles haben, ist
ABCD
ABD
AC
AC
AD
AD
B
B
B
B
B
B
.
. (weiter mit 6 C-und 6 D)
Ich denke, mein problem ist, ich habe nicht viel Erfahrung mit rekursive Probleme so wer kann vorschlagen, einige Programme zu Programmieren, um mir helfen zu wissen, Rekursion besser bitte nicht.
Dank! Wenn irgendwas nicht verständlich ist, bitte darauf hinweisen.
- Danke! Sie bedeutete, wie dieses Recht?
- Permutations.java
- Ja, es ändern können, ein kleines Beispiel einer permutation ist die Eingabe ABC - das sind die Permutationen ABC,ACB,BAC,BCA,CAB,CBA.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast Recht, dass die Rekursion ist der Weg zu gehen. Das Beispiel, das Sie gearbeitet thru w/das bisschen Mathe war alles richtig, aber auch irgendwie indirekt.
Hier einige pseudocode:
Beispiel der teilweisen Rekursion tree
BEARBEITEN
Behandeln wiederholte Zeichen ohne Duplizierung von Permutationen. Lassen Sie
unique
eine Funktion zu entfernen, wiederholt Elemente aus einer collection (oder string, mit dem behandelt wird, wie eine geordnete Zeichen-Sammlung-thru-Indizierung).1) Speichern Sie die Ergebnisse (einschließlich der Duplikate), filtern Sie heraus, danach
2) Vermeiden Sie die Erzeugung von Duplikaten in den ersten Platz
charSet
werden Sammlung, die alle n ElementesoFar
leer. auf Basis FällencharSet
leer und dersoFar
enthält alle n-Elemente.soFar
bestellt werden musscharSet
werden können sortierte oder unsortierte"AABC"
?Machen, eine Methode, die einen string.
Wählen Sie einen Buchstaben aus dem string und der Ausgabe.
Erstellen Sie eine neue Zeichenfolge mit dem input-string minus den Brief, den Sie ausgewählt.
rufen Sie die oben genannte Methode mit der neuen Kette, wenn es mindestens 1 Zeichen
tun dies Kommissionierung von einem Buchstaben für jede mögliche Buchstaben.