269
Fie mulţimea M={1,2,..,n}
şi P(1),P(2),...,P(n)
o permutare a ei. Elementul x
din M
se numeşte punct fix dacă P(x)=x
.
Cerinţa
Se citeşte un număr natural nenul n
. Să se afişeze, în ordine lexicografică, permutările fără puncte fixe ale mulţimii {1,2,..,n}
.
Date de intrare
Fişierul de intrare permpf.in
conţine pe prima linie numărul n
.
Date de ieşire
Fişierul de ieşire permpf.out
va conţine pe fiecare linie elementele unei permutări, separate prin câte un spaţiu.
Restricţii şi precizări
0 < n < 9
Exemplu
permpf.in
3
permpf.out
2 3 1 3 1 2
#include <bits/stdc++.h> using namespace std; ifstream cin("permpf.in"); ofstream cout("permpf.out"); int n , x[10] , p[10] , a[10]; void afisare() { for(int i = 1 ; i <= n ; i++) cout << x[i] << " "; cout << '\n'; } void back(int k) { for(int i = 1 ; i <= n ; i++) if(!p[i] && k != i) { x[k] = i; p[i] = 1; if(k == n) afisare(); else back(k + 1); p[i] = 0; } } int main() { cin >> n; back(1); return 0; }
Comentarii