fbpx

Problema #202 – PermPF – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa