Cod sursa(job #365909)

Utilizator Cristi09Cristi Cristi09 Data 20 noiembrie 2009 10:39:26
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>

int x[10],k,n,as,ev;
FILE*g=fopen("permutari.out","w");

void init();
void succesor();
void eval();
int solutie();
void tipar();
int main()
{
	FILE*f=fopen("permutari.in","r");
	fscanf(f,"%d",&n);
	fclose(f);
	k=0;
	init();
	while(k>=0)
	{
	   do
	   {
		  succesor();
		  if(as)eval();
	   }while(!(!as||as&&ev));
	   if(as)
	   {
		 if(solutie())tipar();
		 else {++k;init();}
	   }
	   else {--k;}

	}
	fclose(g);
	return 0;
}
void init()
{
   x[k]=0;
}
void succesor()
{
   as=0;
   if(x[k]<n)
   {
	  as=1;
	  ++x[k];
   }
}
void eval()
{  ev=1;
   for(int i=0;i<k&&ev;++i)
   if(x[i]==x[k])ev=0;
}
int solutie()
{
   return k==n-1;
}
void tipar()
{
   for(int i=0;i<n;++i)
   {
	  fprintf(g,"%d ",x[i]);
   }
   fprintf(g,"\n");
}