Cod sursa(job #387390)

Utilizator toniobFMI - Barbalau Antonio toniob Data 27 ianuarie 2010 15:47:59
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;

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

int n, sol [ 16 ];

void afisare ()
{
	for ( int i = 1; i <= n; ++i )
		out << sol [ i ] << " ";
	out << "\n";
}

bool valid ( int p )
{
	for ( int i = 1; i < p; ++i )
		if ( sol [ i ] == sol [ p ] )
			return false;
	return true;
}

void bkt ( int p ) // completeaza elementul de pe poztia p din vectorul sol
{
	// dc poz pe care ar urma sa o completez ar fi n + 1 ar insemna ca am completat deja n, deci am o permutare
	if ( p == n + 1 ) 
	{
		afisare ();
		return;
	}
	
	for ( int i = 1; i <= n; ++i ) // parcurg val pe care le poate lua sol [ p ]
	{
		sol [ p ] = i;
		//verific dc asta pe care il pun eu se potriveste cu alea dinainte
		if ( valid ( p ) )
			bkt ( p + 1 );
	}		
}

int main ()
{
	in >> n;
	
	bkt ( 1 );
	
	return 0;
}