Cod sursa(job #631664)

Utilizator andrei.mihut95Andre Mihut andrei.mihut95 Data 9 noiembrie 2011 14:08:44
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
int n,i,st[100],k,ev,as,nr,s;
FILE *f=fopen("permutari.in","r");
FILE *g=fopen("permutari.out","w");
void init()
{
	st[k]=0;
}
int succ()
{
	if(st[k]<n)
	{
		st[k]++;
		return 1;
	}
	return 0;
}
int valid()
{
	for(int i=1;i<k;i++)
		if(st[i]==st[k])
			return 0;
	return 1;
}
int sol()
{
	return k==n;
}
void tipar()
{
	for(i=1;i<=k;i++)
		fprintf(g,"%d",st[i]);
	fprintf(g,"\n");
}
void back()
{
	k=1;
	init();
	while(k>0)
	{
		do
		{
			as=succ();
			if(as)
				ev=valid();
		}while(as&&!ev);
		if(as)
			if(sol())
				tipar();
			else
			{
				k++;
				init();
			}
		else
			k--;
	}
}
int main()
{
	fscanf(f,"%d",&n);
	if(n<1||n>8)
		return 0;
	else
		back();
	return 0;
}