Pagini recente » Cod sursa (job #482106) | Cod sursa (job #1744028) | Cod sursa (job #2542956) | Cod sursa (job #2044047) | Cod sursa (job #1951633)
#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";
}