Cod sursa(job #607242)

Utilizator crisojogcristian ojog crisojog Data 11 august 2011 12:45:04
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
int n,k;
int st[10];
int viz[10];
void init()
{
	st[k]=0;
}
int succesor()
{
	if(st[k]<n)
	{
		st[k]++;
		return 1;
	}
	return 0;
}
int valid()
{
	if(viz[st[k]]==0) 
	{
		viz[st[k]]=1;
		return 1;
	}
	return 0;
}
int solutie()
{
	return k==n;
}
void tipar()
{
	int i;
	for(i=1;i<=n;++i)
		printf("%d ",st[i]);
	printf("\n");
}
void back()
{
	int as, ev;
	k=1; init();
	while(k>0)
	{
		do
		{
			as=succesor();
			if(as) ev=valid();
		}while (as&&!ev);
		if(as)
			if(solutie())
				{tipar();viz[st[k]]=0;}
			else {k++;init();}
		else {k--;viz[st[k]]=0;}
	}
}
int main()
{
	freopen("permutari.in","r",stdin);
	freopen("permutari.out","w",stdout);
	scanf("%d",&n);
	back();
	return 0;
}