415
Cerinţa
Se citeşte un număr natural nenul n, apoi n numere naturale distincte. Să se afişeze, în ordine lexicografică, permutările mulţimii formate din cele n numere citite.
Date de intrare
Fişierul de intrare permutari2.in conţine pe prima linie numărul n, ia r pe a doua linie n numere naturale.
Date de ieşire
Fişierul de ieşire permutari2.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- cele
nnumere de pe a doua linie a fişierului de intrare sunt mai mici decât100
Exemplu
permutari2.in
3 4 7 3
permutari2.out
3 4 7 3 7 4 4 3 7 4 7 3 7 3 4 7 4 3
#include <bits/stdc++.h>
using namespace std;
ifstream cin("permutari2.in");
ofstream cout("permutari2.out");
int n , x[10] , p[10] , a[10];
void afisare()
{
for(int i = 1 ; i <= n ; i++)
cout << a[x[i]] << " ";
cout << '\n';
}
void back(int k)///k = poz la care am ajuns
{
for(int i = 1 ; i <= n ; i++)///de unde se ia x[k]
if(!p[i]) ///daca nu e pus anterior
{
x[k] = i;///pun elementul
p[i] = 1;///l am folosit pe i
if(k == n) afisare();///solutie
else back(k + 1);///trec la poz urmatoare
p[i] = 0;///marchez ca nefolosit
}
}
int main()
{
cin >> n;
for(int i = 1 ; i <= n ; i++)
cin >> a[i];
sort(a + 1 , a + n + 1);
back(1);///incep generarea de la 1
return 0;
}
Comentarii