Cod sursa(job #144825)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 27 februarie 2008 23:47:11
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <stdio.h>

#define nmax 16

int prev[nmax],n,next[nmax],st[nmax];

void doit(int i)
{
	if(i==n)
	{
		for(i=0;i<n;++i)
			printf("%d ",st[i]);
		printf("\n");
		return ;
	}
	int j;
	for(j=next[0];j;j=next[j])
	{
		st[i]=j;
		next[prev[j]]=next[j];
		prev[next[j]]=prev[j];
		doit(i+1);
		next[prev[j]]=j;
		prev[next[j]]=j;
	}
}

int main()
{
	freopen("permutari.in","r",stdin);
	freopen("permutari.out","w",stdout);
	int i;
	scanf("%d",&n);
	for(i=0;i<=n;++i)
		next[i]=i+1,prev[i+1]=i;
	next[n]=prev[0]=0;
	doit(0);
	return 0;
}