Cod sursa(job #932938)

Utilizator andreimdvMoldovan Andrei andreimdv Data 29 martie 2013 13:46:41
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<cstdio>
using namespace std;
FILE *fin=fopen("permutari.in","r");
FILE *fout=fopen("permutari.out","w");

int st[10],i,ams,n,ev;
int pune_valoare(int niv)
{
    int ok=0;
    if(niv<=n&&st[niv]<n)
    {
        st[niv]++;
        ok=1;
    }
return ok;
}
int valid(int niv)
{
    int ok=1,i;
    for(i=1;i<niv;i++)
    if(st[niv]==st[i])
    ok=0;
    return ok;
}
void back()
{
    int k=1;
    while(k>0)
    {
        do{ams=pune_valoare(k);
        if(ams==1)
        ev=valid(k);
        }while(ams==1&&ev==0);
        if(ams==1&&ev==1)
        {
            if(k==n)
            {   int aux;
                for(aux=1;aux<=n;aux++)
                fprintf(fout,"%d ",st[aux]);
                fprintf(fout,"\n");

            }
            else
            {   k++;
                st[k]=0;
            }
        }
        else
        k--;





    }



}
int main()
{
    fscanf(fin,"%d",&n);
    back();
    fclose(fin);
    fclose(fout);
    return 0;
}