Il existe un théorème bien connu selon lequel toute permutation peut être décomposée en un ensemble de cycles . Votre travail consiste à écrire le programme le plus court possible pour le faire.
Contribution:
Deux lignes. Le premier contient un nombre N
, le second contient N
des entiers distincts dans la plage [0,N-1]
séparée par des espaces. Ces entiers représentent une permutation d' N
éléments.
Production:
Une ligne pour chaque cycle de la permutation. Chaque ligne doit être une liste d'entiers séparés par des espaces dans l'ordre des cycles.
Les cycles peuvent être émis dans n'importe quel ordre et chaque cycle peut être émis à partir de n'importe quelle position.
Exemple 1:
8
2 3 4 5 6 7 0 1
Cette entrée code la permutation 0-> 2, 1-> 3, 2-> 4, 3-> 5, 4-> 6, 5-> 7, 6-> 0, 7-> 1. Cela se décompose en cycles comme celui-ci:
0 2 4 6
1 3 5 7
Une sortie tout aussi valide serait
5 7 1 3
2 4 6 0
Exemple 2:
8
0 1 3 4 5 6 7 2
sortie valide:
0
1
4 5 6 7 2 3
>C.