Cod sursa(job #445504)

Utilizator om6gaLungu Adrian om6ga Data 23 aprilie 2010 23:43:50
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.36 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int k=0,n,*st;
FILE *in,*out;

void init()
{
     st[k]=0;    
}

int next()
{
    if (st[k]+1<=n)
    {
        st[k]++;
        return 1;               
    }   
    return 0;
}

int sol()
{
    if (k==n-1) return 1;
    return 0;   
}    

int valid()
{
    int i;
    for (i=0;i<k;i++)
        if(st[i]==st[k])
             return 0;
    return 1;              
}


void afis()
{
     int i;
     for (i=0;i<n;i++)
         printf("%d ",st[i]);
     printf("\n");
}



int main()
{
    in=fopen("permutari.in","r");
    out=fopen("permutari.out","w");
    int AS,i;
    fscanf(in,"%d",&n);
    st=malloc(n*sizeof(int));
    init();
    while (k>=0)
    {
          do {} while ( (AS=next()) && (!valid()) );
          if (AS)
          {
              //afis();
              //getchar();
              if (sol())
              {
                 afis();
                 for (i=0;i<n;i++)
                     fprintf(out,"%d ",st[i]);
                 fprintf(out,"\n");
           
              }       
              else
              {
                  k++;    
                  init();
              }   
          }      
          else
              k--;
    }
    //getchar();
    fclose(in);
    fclose(out);
    return 0;   
}