Cod sursa(job #881796)

Utilizator radutrestianRadu Trestian radutrestian Data 18 februarie 2013 17:09:41
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
FILE *in,*out;
using namespace std;
void back(int pos);
void afisare(int pos);
bool valid(int pos);
int st[10],n;
int main()
{
    in=fopen("permutari.in","rt");
    out=fopen("permutari.out","wt");
    fscanf(in,"%d",&n);
    back(1);
    fclose(in);
    fclose(out);
    return 0;
}

void back(int pos)
{
    int i;
    for(i=1;i<=n;i++)
    {
        st[pos]=i;
        if(valid(pos))
        {
            if(pos==n)
                afisare(pos);
            else
                back(pos+1);
        }
    }
}

bool valid(int pos)
{
    for(int i=1;i<pos;i++)
    {
        if(st[pos]==st[i])
        return false;
    }
    return true;
}

void afisare(int pos)
{
    for(int i=1;i<=pos;i++)
    {
        fprintf(out,"%d ",st[i]);
    }
    fprintf(out,"\n");
}