Cod sursa(job #1237098)

Utilizator AndreiBarbutaAndrei Barbuta AndreiBarbuta Data 3 octombrie 2014 09:38:45
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#define IN "damesah.in"
#define OUT "damesah.out"

const int MAX = 15 ;
using namespace std;

ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;

int col [ MAX ] , dp [ 2 * MAX ] , ds [ 2 * MAX ] , n , ok , nrs , sol [ MAX ] ;

void afis (  ) ;

void back ( int k ) ;

int main()
{
    fin >> n ;
    back ( 1 ) ;
    fout << nrs ;
    return 0;
}

void back ( int k ){
    if ( k == n + 1 ){
        if ( !ok )
            afis ( ) ;
        nrs ++ ;
    }
    else
        for ( register int i = 1 ; i <= n ; ++ i ){
            if ( !col [ i ] and !dp [ i - k + n ] and !ds [ i + k ] ){
                col [ i ] = dp [ i - k + n ] = ds [ i + k ] = 1 ;
                sol [ k ] = i ;
                back ( k + 1 ) ;
                col [ i ] = dp [ i - k + n ] = ds [ i + k ] = sol [ k ] = 0 ;
            }
        }

}

void afis (  ){
    for ( register int i = 1 ; i <= n ; ++ i )
        fout << sol [ i ] << " " ;
    fout << endl ;
    ok = 1 ;
}