299
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
n
numere 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