Pseudo-Code der rekursiven Methode zum Drucken aller Permutationen von $ N $ gegeben Ganzzahlen
-
28-09-2020 - |
Frage
Ich verstehe diesen Pseudo-Code wirklich nicht.Die Funktion druckt alle Permutationen von $ n $ angegebene Ganzzahlen, vorausgesetzt, dass alle Zahlen unterschiedlich sind.
Gibt es eine Möglichkeit, diesen Code leichter zu erklären, da ich den Zweck des Swapping wirklich nicht bekomme.
generasacodicetagpre.Lösung
Ihr Verfahren erzeugt alle Permutationen der Eingabe, wodurch sie am Ende in seinen ursprünglichen Zustand zurückgibt.
Wenn der Eingang die Länge 1 aufweist, gibt es nichts zu tun.
Andernfalls nehme an, dass der Eingang $ A_1, \ LDOs, A_N $ ist. Lassen Sie uns alle Permutationen von $ A_1, \ LDOTs, A_N $ als
Hier ist das Verfahren:
- .
- Ausgabe $ A_1, [A_2, A_3, \ LDOTs, A_ {N-1}, A_n] $ .
- Ausgabe $ A_2, [A_1, A_3, \ LDOTs, A_ {N-1}, A_n] $ .
- Ausgabe $ A_3, [A_2, A_1, \ LDOTs, A_ {N-1}, A_n] $ .
- ...
- Ausgabe $ A_n, [A_2, A_3, \ LDOTs, A_ {N-1}, A_1] $ .
Im ersten Schritt geht der Vorgang einfach über alle Permutationen des Schwanzes der Liste, bestehend aus allen als dem ersten Element.
Im zweiten Schritt wechselt es $ A_1 $ und $ A_2 $ , geht alle Permutationen über des Schwanzes und dann wechselt dann $ A_1 $ und $ A_2 $ zurück.
Im dritten Schritt wechselt es $ A_1 $ und $ A_3 $ , geht alle Permutationen über des Schwanzes und dann wechselt dann $ A_1 $ und $ A_3 $ zurück.
usw. bis in der