Cod sursa(job #608300)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 16 august 2011 10:20:44
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
long a[10],n;
void next_perm()
{
	int i,aux,j,min=200,poz=n-2;
	for (i=n-2;i>=0;i--)
		if (a[i]<a[i+1])
		{
			for (j=i+1;j<n;j++)
				if (a[i]<a[j])
					if (a[j]<=min)
					{
						poz=j;
						min=a[j];
					}
			aux=a[i];
			a[i]=a[poz];
			a[poz]=aux;
			for (j=1;j<=(n-i)/2;j++)
			{
				aux=a[i+j];
				a[i+j]=a[n-j];
				a[n-j]=aux;
			}
			break;
		}
}
int main()
{
	long i,j;
	freopen("permutari.in","r",stdin);
	freopen("permutari.out","w",stdout);
	scanf("%ld",&n);
	for (i=0;i<=n-1;i++)
		a[i]=i+1;
	n+=2;
	long p,ok;
	p=1;
	for (i=1;i<=n-2;i++)
		p*=i;
	for (i=1;i<=p;i++)
	{
		ok=0;
		for (j=0;j<=n-3;j++)
			if (a[j]==0)
				ok=1;
		if (ok==0)
		{
			for (j=0;j<=n-3;j++)
				printf("%ld ",a[j]);
			printf("\n");
		}
		else
			i--;
		next_perm();
	}
}