Cod sursa(job #1880763)

Utilizator ReeeBontea Mihai Reee Data 15 februarie 2017 21:47:47
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#define NMAX 14

using namespace std;

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

int st[NMAX], n;
bool coloana[NMAX], diag1[NMAX * 2], diag2[NMAX * 2];
int nrsol;

void Plaseaza_Regina(int linie)
{
    if ( linie == n + 1 )
    {
        ++nrsol;
        if ( nrsol == 1 )
        {
            for ( int i = 1 ; i <= n ; ++i )
                fout << st[i] << " ";
            fout << '\n';
        }
    }
    else
        for ( int i = 1 ; i <= n ; ++i )
            if ( !coloana[i] && !diag1[i - linie + n - 1] && !diag2[linie + i] )
            {
                st[linie] = i;
                coloana[i] = diag1[i - linie + n - 1] = diag2[linie + i] = true;
                Plaseaza_Regina( linie + 1 );
                coloana[i] = diag1[i - linie + n - 1] = diag2[linie + i] = false;
            }
}

int main ()
{
    fin >> n;
    Plaseaza_Regina(1);
    fout << nrsol;
    return 0;
}