Rezolvare completă PbInfo #125 Permutari2

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 

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Permutari2:

#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;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #125 Permutari2

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #125 Permutari2 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!