Cod sursa(job #218710)

Utilizator andreea_mandreea martinovici andreea_m Data 3 noiembrie 2008 10:12:09
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int n,k,st[10];

void init()
{
	st[k]=0;
}

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

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

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

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

void bkt()
{
	int as,ev;
	k=1;
	init();
	while(k!=0)
	{
		do
		{
			as=succesor();
			ev=valid();
		}
		while(as&&!ev);
		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();
	return 0;
}