Es gibt einen bekannten Satz, dass jede Permutation in eine Reihe von Zyklen zerlegt werden kann . Ihre Aufgabe ist es, das kürzestmögliche Programm dafür zu schreiben.
Eingang:
Zwei Linien. Die erste enthält eine Zahl N
, die zweite enthält N
verschiedene Ganzzahlen in dem [0,N-1]
durch Leerzeichen getrennten Bereich . Diese Ganzzahlen repräsentieren eine Permutation von N
Elementen.
Ausgabe:
Eine Zeile für jeden Zyklus in der Permutation. Jede Zeile sollte eine durch Leerzeichen getrennte Liste von Ganzzahlen in Zyklusreihenfolge sein.
Zyklen können in beliebiger Reihenfolge ausgegeben werden, und jeder Zyklus kann von einer beliebigen Position aus ausgegeben werden.
Beispiel 1:
8
2 3 4 5 6 7 0 1
Dieser Eingang codiert die Permutation 0-> 2, 1-> 3, 2-> 4, 3-> 5, 4-> 6, 5-> 7, 6-> 0, 7-> 1. Dies zerfällt in Zyklen wie folgt:
0 2 4 6
1 3 5 7
Eine ebenso gültige Ausgabe wäre
5 7 1 3
2 4 6 0
Beispiel 2:
8
0 1 3 4 5 6 7 2
gültige Ausgabe:
0
1
4 5 6 7 2 3
>C.