Cerinţa
Se citeşte un număr natural nenul n. Să se afişeze, în ordine lexicografică, permutările mulţimii {1,2,..,n}.
Date de intrare
Fişierul de intrare permutari.in conţine pe prima linie numărul n.
Date de ieşire
Fişierul de ieşire permutari.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
permutari.in
3
permutari.out
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
Răspunsuri la întrebare
Răspuns de
12
#include<iostream>
#include<fstream>
using namespace std;
int st[12], n, x;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
void tipar(int l) { int i; for(i=1;i<=l;i++) fout<<st[i]<<" "; fout<<endl; } int valid(int l) { int i; for(i=1;i<l;i++) if(st[i]==st[l]) return 0; return 1; } void back(int vf) { int k; for(k=1;k<=n;k++) { st[vf]=k; if(valid(vf)) { if(vf==n) tipar(vf); else back(vf+1); } } } int main() { fin>>n; //st[0]=0; back(1); return 0; }
#include<fstream>
using namespace std;
int st[12], n, x;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
void tipar(int l) { int i; for(i=1;i<=l;i++) fout<<st[i]<<" "; fout<<endl; } int valid(int l) { int i; for(i=1;i<l;i++) if(st[i]==st[l]) return 0; return 1; } void back(int vf) { int k; for(k=1;k<=n;k++) { st[vf]=k; if(valid(vf)) { if(vf==n) tipar(vf); else back(vf+1); } } } int main() { fin>>n; //st[0]=0; back(1); return 0; }
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Fizică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă