Feu un programa que escrigui totes les permutacions de amb exactament cicles, on . Per exemple, considereu la permutació . A la posició hi ha un , a la posició hi ha un , i a la posició hi ha un . Així doncs, un dels cicles és . Els altres dos cicles són i . La permutació té els dos cicles i , mentre que la permutació només té el cicle .
L’entrada consisteix en i , amb .
Escriviu totes les permutacions de amb cicles.
Podeu escriure les solucions d’aquest exercici en qualsevol ordre.
Un programa possible no crea les permutacions consecutivament d’esquerra a dreta, sinó saltant pel vector solució, usant una funció
void f(int i, int ini, int caselles, int cicles);
on @i@ és la següent posició a omplir, @ini@ és on comença el cicle actual encara no tancat, @caselles@ és el nombre de caselles encara lliures, i @cicles@ és el nombre de cicles que encara falta crear.
Input
3 1
Output
(2, 3, 1) (3, 1, 2)
Input
3 2
Output
(2, 1, 3) (1, 3, 2) (3, 2, 1)
Input
3 3
Output
(1, 2, 3)