Cod sursa(job #659870)

Utilizator federerUAIC-Padurariu-Cristian federer Data 11 ianuarie 2012 09:02:09
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
// toate permutarile de n elemente in ordine lexicografica
#include<fstream.h>

long p[100],n,i,k,poz,min,j,aux;

ifstream fin("permutari.in");
ofstream fout("permutari.out");

int main()
{
	fin>>n;
	for(i=1;i<=n;i++)
	{
		p[i]=i;
		fout<<p[i]<<' ';
	}
	fout<<'\n';
	
	do
	{
		poz=n;
		while(p[poz]<p[poz-1] && poz>1) poz--;
		poz--;
		if(poz)
		{
			min = p[poz+1];
			j=poz+1;
			k=0;
			for(i=poz+1;i<=n&&k==0;i++)
				if(min>p[i] && p[i]>p[poz])
				{
					min = p[i];
					j=i;
					k=1;
				}
			aux=p[poz];
			p[poz]=p[j];
			p[j]=aux;
			for(i=1;i<=(n-poz)/2;i++)
			{
				aux=p[poz+i];
				p[poz+i]=p[n-i+1];
				p[n-i+1]=aux;
			}
			
			for(i=1;i<=n;i++)
				fout<<p[i]<<' ';
			fout<<'\n';
		}
	}
	while(poz);
fout.close();
return 0;
}