Informatică, întrebare adresată de Halip99, 9 ani în urmă

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ât 100
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

Răspunsuri la întrebare

Răspuns de ionutg38
6
#include <fstream> #include <algorithm> using namespace std; int x[10], a[10] ,n; ofstream fout("permutari2.out"); int OK(int k){ for(int i=1;i<k;++i) if(x[k]==x[i]) return 0; return 1; } void back(int k){ for(int i=1 ; i<=n ; ++i) { x[k]=i; if( OK(k) ) if(k==n){ for( int j=1;j<n;j++) fout<<a[x[j]]<<" "; fout<<a[x[n]]; fout<<endl; } else back(k+1); } } int main(){ ifstream fin("permutari2.in"); fin>>n; for(int i=1;i<=n;++i) fin >> a[i]; fin.close(); sort(a+1 , a+n+1); back(1); fout.close(); return 0; }
Alte întrebări interesante