Cod sursa(job #145855)

Utilizator sorinalupuLupu Sorina Elena sorinalupu Data 29 februarie 2008 16:43:09
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
int st[120],n,i;
int m[100];
int valid(int k)
	{
		int i;
		for (i=1;i<k;i++)

			    if (st[k]==st[i])    return 0;
		return 1;
	}
void solutie()
	{

		int i;
		for (i=1;i<=n;i++)
	printf("%d ",m[st[i]]);
	printf("\n");
	}
void backtraking()
{
	int  up,k;
	k=1;
	st[k]=0;
	while (k>0)
		{
			up=0;
			while((!up)&&(st[k]<n))
				{
				       st[k]++;
				       if (valid(k)) up=1;
				}
			if (up)
				if (k==n) solutie() ;
					else
					{      k++;
						st[k]=0;
					}
				else k--;
		}
	}
void main()
	{

		freopen("permutari.in","r",stdin);
		freopen("permutari.out","w",stdout);
		scanf("%d",&n);
		for (i=1;i<=n;i++) m[i]=i;
		backtraking();

	}