Cod sursa(job #976879)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 24 iulie 2013 11:31:56
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
#include<bitset>

using namespace std;

int n;
char a[15],N;
bitset< 10 >use;
ofstream fout("permutari.out");

inline void Back(int k)
{
    if(k==n+1)//am terminat de construit solutia
    {
        int i;
        for(i=1;i<=n;++i)
            fout<<a[i]<<" ";
        fout<<"\n";
    }
    else
    {
        for (char i = '1';i <= N ;i++)
            if(use[int(i-'0')]==0)//daca numarul nu l-am mai folosit pe i in pozitiile anterioare
            {
                a[k] = i;//punem pe pozitia k pe i
                use[i-'0'] = 1;//il marcam ca folosit
                Back(k+1);//mergem pe pozitia k+1
                use[i-'0'] = 0;//dupa ce revenim din apelul recursiv cifra i este libera
            }
    }
}

int main()
{
    ifstream fin("permutari.in");
    fin>>n;
    N = char(n+'0');
    fin.close();
    Back(1);//pornim sa construim solutia de la pozitia 1
    fout.close();
    return 0;
}