Pagini recente » Cod sursa (job #1846306) | Cod sursa (job #1650946) | Cod sursa (job #2607688) | Cod sursa (job #2860991) | Cod sursa (job #1971398)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
const int N=15;
int v[N], n, cnt;
int sol[14]= {0,0,0,0,2,10,4,40,92,352,724,2680,14200,73712};
bool gasit=false;
bool validare(int pas)
{
for(int i=1; i<pas; i++)
if(v[i]==v[pas])
return false; //pe aceeasi coloana
for(int i=1; i<pas; i++)
if(abs(i-pas)==abs(v[i]-v[pas]))
return false;
return true;
}
void afisare(int pas)
{
for(int i=1; i<=n; i++)
g<<v[i]<<' ';
g<<'\n';
gasit=true;
}
void bkt(int pas)
{
if(!gasit)
for(int i=1; i<=n; i++)
{
v[pas]=i;
if(validare(pas)&&!gasit)
{
if(pas==n)
afisare(pas);
else
bkt(pas+1);
}
}
}
int main()
{
f>>n;
bkt(1);
g<<sol[n];
f.close();
g.close();
return 0;
}