Pseudo-Code der rekursiven Methode zum Drucken aller Permutationen von $ N $ gegeben Ganzzahlen

cs.stackexchange https://cs.stackexchange.com/questions/119432

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.

War es hilfreich?

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 $ [A_1, \ LDOTs, A_N] $ < / span>.

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 $ n $ ten Schritt, wechselt es $ A_1 $ und $ A_N $ , geht alle Permutationen des Schwanzes über, und schaltet dann $ A_1 $ und $ A_N $ zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top