Cod sursa(job #1110811)

Utilizator gerd13David Gergely gerd13 Data 18 februarie 2014 13:32:45
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>


using namespace std ;

const int NMAX = 14 ;
const int INF = 0x3f3f3f3f;

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


int N ;
int ans = - INF;
bool col[NMAX], main_Diag[NMAX * 2], sec_diag[NMAX * 2] ;
int queen[NMAX] ;

int backtarking(int a, int b)
{
    if(a == b)
    {
        if(ans < 1)
        {
            for(int i = 0 ; i < N ; ++ i)
                cout << queen[i] + 1 ;
            cout << '\n' ;
        }
        ++ ans ;
    }
    else {
        for(int i = 1 ; i < N ; ++ i)
        {

      if ( !col[i] && !main_Diag[i - a + b - 1] && !sec_diag[a + i] ) {
                queen[a] = i;

                col[i] = main_Diag[i - a + b - 1] = sec_diag[a + i] = true;
                 backtarking(a + 1, b );
                col[i] = main_Diag[i - a + b - 1] = sec_diag[a + i] = false;
            }
        }
    }
}
int main()
{

        cin >> N ;

    backtarking(0, N) ;
    cin.close() ;
    cout.close() ;
    return 0 ;
}