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ış N
aralıkta farklı tamsayılar içerir [0,N-1]
. Bu tamsayılar N
elementlerin 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.