Cod sursa(job #1808822)

Utilizator tiberiu.bucur17Tiberiu Constantin Emanoil Bucur tiberiu.bucur17 Data 18 noiembrie 2016 10:50:16
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#include <stdbool.h>
int n,sol[8];
FILE *fin,*fout;
inline bool succesor(int k)
{
    if(sol[k]<n)
    {
        sol[k]++;
        return true;
    }
    return false;
}
inline bool valid(int k)
{
    int i;
    for(i=0;i<k;i++)
        if(sol[i]==sol[k])
            return false;
    return true;
}
inline void write()
{
    int i;
    for(i=0;i<n;i++)
        fprintf(fout,"%d ",sol[i]);
    fputc('\n',fout);
}
void back(int k)
{
    if(k==n)
        write();
    else
    {
        sol[k]=0;
        while(succesor(k))
            if(valid(k))
                back(k+1);
    }
}

int main()
{
    fin=fopen("permutari.in","r");
    fout=fopen("permutari.out","w");
    fscanf(fin,"%d",&n);
    back(0);
    fclose(fin);
    fclose(fout);
    return 0;
}