Cod sursa(job #1258453)

Utilizator robertstrecheStreche Robert robertstreche Data 8 noiembrie 2014 21:47:50
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>

#define lmax 15
#define modul(a) (a>=0?a:-(a))

using namespace std;

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

int n,nr;

int sol[lmax];

int folc[lmax];

inline void back(int k)
{
    if (k==n+1)
     {
       nr++;

       if (nr==1)
         for (int i=1;i<=n;i++)
           g<<sol[i]<<" ";
     }
    else
     {
         for (int i=1;i<=n;i++)
             if (folc[i]==0)
                {
                    bool ok=1;

                    for(int j=1;j<k;j++)
                        if (k-j==modul(sol[j]-i))
                          {
                              ok=0;
                              break;
                          }

                     if (ok)
                      {
                           sol[k]=i;
                           folc[i]=1;

                           back(k+1);

                           folc[i]=0;
                      }

                }
     }
}

int main()
{
    f>>n;

    back(1);

    g<<'\n'<<nr;

    f.close();
    g.close();
}