Cod sursa(job #330123)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 8 iulie 2009 19:45:18
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
int i,st[21],k,n;
void init()
{
 st[k]=0;
}

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

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

int solutie ()
{
 return (k==n);
}

void tipar()
{
  for(i=1;i<=k;i++)
	 printf("%d ",st[i]);
printf("\n");
}

void back ()
{
int as,ev;
 k=1;init();
while(k>0)
{
do
{
as=succesor();
ev=valid();
}while(as && !ev);
if(as==1)
{
 if(solutie())
	tipar();
  else
	 {
	   k++;
	  init();
	 }
}//if
else
   {
	k--;
   }

}//while

}
int main ()
{
freopen("permutari.in","r",stdin);
freopen("permutari.out","w",stdout);
scanf("%d",&n);
back();
return 0;
}