Cod sursa(job #154783)

Utilizator oumbraPaul Filimoon oumbra Data 11 martie 2008 14:19:12
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#include <cstring>

int n, st[20], v[20];
char buffer[10000000];
int bufferi = 0;

#define p n

void back(int k)
{
	int f = 1;

	if(k < n)
	{
		for(int i = 1; i <= p; i++)
		{	
			st[k] = i;
			back(k+1);
		}
	}
	else
	{
		memset(v, 0, sizeof(v));

		for(int i = 0; i < n; i++)
		{	
			v[st[i]]++;
			if(v[st[i]] > 1)
				f = 0, i = 666;
		}

		if(f)
		{
			for(int i = 0; i < n; i++)
			{
	//			printf("%d ", st[i]);
	
				buffer[bufferi++] = st[i]+'0';
				buffer[bufferi++] = ' ';
			}
		buffer[bufferi++] = '\n';
		}
	}
}

int main()
{
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);

	scanf("%d", &n);

	back(0);

	buffer[bufferi] = '\0';

	printf("%s", buffer);
	return 0;
}