Herhangi bir permütasyonun bir dizi döngüye ayrılabileceği iyi bilinen bir teorem vardır . İşiniz mümkün olan en kısa programı yazmaktır.
Giriş:
İki çizgi. Birincisi bir sayı N, ikincisi boşluklarla ayrılmış Naralıkta farklı tamsayılar içerir [0,N-1]. Bu tamsayılar Nelementlerin permütasyonunu temsil eder .
Çıktı:
Permütasyondaki her döngü için bir satır. Her satır, döngü sırasında boşlukla ayrılmış bir tam sayı listesi olmalıdır.
Döngüler herhangi bir sırayla çıkarılabilir ve her bir döngü herhangi bir konumdan başlayarak çıkarılabilir.
Örnek 1:
8
2 3 4 5 6 7 0 1
Bu giriş 0-> 2, 1-> 3, 2-> 4, 3-> 5, 4-> 6, 5-> 7, 6-> 0, 7-> 1 permütasyonunu kodlar. Bu, aşağıdaki gibi döngüler halinde ayrışır:
0 2 4 6
1 3 5 7
Aynı derecede geçerli bir çıktı
5 7 1 3
2 4 6 0
Örnek 2:
8
0 1 3 4 5 6 7 2
geçerli çıktı:
0
1
4 5 6 7 2 3
>C.