Cod sursa(job #387393)

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

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

int n, sol [ 16 ];
bool marcat [ 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 )
		//verific dc asta pe care il pun eu se potriveste cu alea dinainte
		if ( !marcat [ i ] )		// parcurg val pe care le poate lua sol [ p ]
		{
			sol [ p ] = i;
			marcat [ i ] = true;
			bkt ( p + 1 );
			marcat [ i ] = false;
		}		
}

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