Pagini recente » Cod sursa (job #2894911) | Cod sursa (job #787054) | Cod sursa (job #1853732) | Cod sursa (job #2382989) | Cod sursa (job #1570290)
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
int n,nr,ok;
ifstream fin("damesah.in ");
ofstream fout("damesah.out");
const int maxn =15;
pair <int,int>regina[maxn];
inline int mabs(int x)
{
if (x<0)
return -x;
return x;
}
void afisare ()
{ for (int i=1;i<=n;i++)
fout<<regina[i].second<<"\n";
}
bool valid (int ri, int rj, int nivel)
{
for (int i=1;i<nivel;i++)
if (rj==regina[i].second || mabs(ri-regina[i].first)==mabs(rj-regina[i].second))
return false;
return true;
}
void back (int linie)
{
if (linie==n+1)
{ nr++;
if (nr==1) afisare();
return;
}
for (int coloana=1;coloana<=n;coloana++)
if (valid(linie,coloana,linie))
{
regina[linie]=make_pair(linie,coloana);
back(linie+1);
}
}
int main()
{ fin>>n;
back(1);
fout<<nr;
return 0;
}