Cod sursa(job #1951633)

Utilizator radu.leonardoThe Doctor radu.leonardo Data 3 aprilie 2017 18:52:09
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
constexpr int SolNumber[] = { 0,1,0,0,2,10,4,40,92,352,724,2680,14200,73712,365596,2279184 };

int N,Stack[14],Columns[14],Diagonals_left[14 * 2],Diagonals_right[14 * 2],OK=0;

#define Diagonals_left (Diagonals_left+14)

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

void write()
{
    for(int i=1;i<=N;++i)  g<<Stack[i]<<" ";
    g<<"\n";
}

void back(int level)
{
    if(OK==1) return;
    if (level>N)    {write();OK=1;return;}
    else
        for(int i=1;i<=N;++i)
        {
            if ( !Columns[i] && !Diagonals_left[level- i] && !Diagonals_right[level+ i] )
            {
                Columns[i]=Diagonals_left[level- i]=Diagonals_right[level+ i]=1;

                Stack[level] = i;
                back(level+ 1 );

                Columns[i]=Diagonals_left[level- i]=Diagonals_right[level+ i]=0;
            }
        }
}

int main()
{
    f >> N;
    back( 1 );
    g<<SolNumber[N]<<"\n";
}