Cod sursa(job #651467)

Utilizator yonnssyonns yonns yonnss Data 20 decembrie 2011 15:50:33
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <stdio.h>
#include <conio.h>
long long aff=0;
int inline cauta(int v[128],int val,int l)
{
    int i;
    for(i=0; i<128; i++) if(v[i]==val) return 1;
    return 0;

}
int ok(int n,int v[128])
{
    int i;
    for(i=0; i<n; i++) if(v[i]==0) return 0;
    return 1;
}
int getindex(int n,int v[128]){
 int i;
 for(i=0;i<n;i++) if(v[i]==0) break;
 return i;

}
int verifica(int v[128],int n,int val){
    int i;
for(i=0;i<n;i++) if(v[i]==val) return 0;
return 1;
}
void permutari(int n,FILE *f,int v[128],int curent,int lc)
{
    int i,k,c;

    c=getindex(n,v);
    if(c==n) return ;
    for(i=1; i<=n; i++)
    {
        if(verifica(v,n,i))
        {
            v[c]=i;
            permutari(n,f,v,0,0);
        }
        if(ok(n,v))  {

        for(k=0;k<n;k++) fprintf(f,"%d ",v[k]);
         fprintf(f,"\n");

        }
        if(!verifica(v,n,i))
           {

            v[c]=0;
           }
    }



}
long long fact(int n){
    long long s=1,i;
    for(i=1;i<=n;i++) s=s*i;
    return s;

}
main()
{
    int n;
    FILE *in=fopen("permutari.in","r");
    fscanf(in,"%d",&n);
    FILE *f=fopen("permutari.out","w");

    int v[128];
    int i;
    for(i=0; i<128; i++) v[i]=0;
    permutari(n,f,v,0,0);
    fclose(f);



}