Cod sursa(job #380109)

Utilizator zalmanDanci Emanuel Sebastian zalman Data 4 ianuarie 2010 20:51:55
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int sw, m, n , p[20], i ,j;

void print(void)
{
	for(i = 0; i < n; ++i)
		printf("%d ", p[i]);
	printf("\n");
}

void gen()
{
	if(!sw )
	{
		for (i = n-2; i >= 0 && p[i] > p[i+1]; --i);
			if( i < 0 )
				sw = 1;
			else
			{
				for (j = n - 1; p[i] > p[j]; --j);
					swap(p[i], p[j]);
				m = (n - i) / 2;
				for(j = 1; j <= m; ++j)
					swap(p[i+j], p[n-j]);
			}
	}
}

int main(void)
{
	freopen("permutari.in","r",stdin);
	freopen("permutari.out","w",stdout);
	scanf("%d", &n);

	for(i = 0; i < n; ++i)
		p[i] = i + 1;
	print();

	sw = 0;
	while(!sw)
	{
		gen();
		if(!sw)
			print();
	}
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}