Cod sursa(job #1098323)

Utilizator superman_01Avramescu Cristian superman_01 Data 4 februarie 2014 18:55:37
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>

#define NMAX 14

using namespace std;

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

int main_D[2*NMAX],second_D[2*NMAX] , column[NMAX];
int elem[NMAX] , Sol , N ;


void Back ( int K )
{
	int i , j ;
	for ( i = 1 ; i <= N ; ++i )
	{
		if ( column[i] or main_D[N-K+i] or second_D[K+i-1] )
			continue;
		elem[K] = i ;
		column[i] = main_D[N-K+i] = second_D[K+i-1] = true ;
		if ( K == N )
		{
			if ( Sol < 1 )
			{
				for ( j = 1 ; j <= N  ; ++j )
					out << elem[j] << " ";
			}
			++Sol;
		}
		else
			Back ( K + 1 );
		column[i] = main_D[N-K+i] = second_D[K+i-1] = false ;
	}
	
}

int main ( void )
{
	int i , j ;
	in >> N ; 
	Back ( 1 );
	out << Sol << "\n";
	in.close();
	out.close();
	return 0 ;
}