Cod sursa(job #1570290)

Utilizator Robert1999Cobzariu Robert Robert1999 Data 16 ianuarie 2016 12:31:30
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#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;
}