Cod sursa(job #217744)

Utilizator oprea_florinoprea florin oprea_florin Data 30 octombrie 2008 09:16:40
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<stdio.h>
int st[9],n,i,k;
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<=n;++i)
		printf("%d ",st[i]);
	printf("\n");
}
void bkt(){
	int as;
	k=1;
	init();
	while(k>0){
		do{}while((as=succesor())&&!valid());
		if(as)
			if(solutie())
				tipar();
			else{
				k++;
				init();
			}
		else k--;
	}
}
int main(){
	freopen("permutari.in","r",stdin);
	freopen("permutari.out","w",stdout);
	scanf("%d",&n);
	bkt();
	fclose(stdin);
	fclose(stdout);
	return 0;
}