Cod sursa(job #542605)

Utilizator balakraz94abcd efgh balakraz94 Data 26 februarie 2011 17:13:53
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<cstdio>
#include<algorithm>
#define l 9
using namespace std;

void citeste();
void init();
void dancing_links();
void afiseaza();

int a[l];
int n;



void citeste()
{
	freopen("permutari.in","r",stdin);
	
	scanf("%d",&n);
	
	fclose(stdin);
}


void init()
{
	for(int i=1;i<=n;i++) a[i]=i;
}

void dancing_links()
{
	int ok=1;
	do
	{
		afiseaza();
		
		int i,j;
		ok=0;
		for(j=n;j>1;j--) if(a[j]>a[j-1]) //caut de la coada prima "crestere"
		{
			i=j-1;
			ok=1;
			break;
		}
		
		for(j=n;j>=1;j--) if(a[j]>a[i]) break;
		
		swap(a[i],a[j]);
		
		reverse(a+i+1,a+n+1);
	}while(ok);
}





void afiseaza()
{
	for(int i=1;i<=n;i++) printf("%d ",a[i]);
	printf("\n");
}



int main()
{
	citeste();
	init();
	
	freopen("permutari.out","w",stdout);
	
	dancing_links();
	
	fclose(stdout);
	
	return 0;
}