Cod sursa(job #1258443)

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

#define lmax 15

using namespace std;

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

int n,nr;

int sol[lmax];

int folc[lmax],fold[lmax];

inline int modul(int a)
{
    return a>=0?a:-a;
}

inline void tipar()
{
    for (int i=1;i<=n;i++)
     g<<sol[i]<<" ";
}

inline bool valid(int k)
{
    for(int i=1;i<k;i++)
      if (modul(i-k)==modul(sol[i]-sol[k]))
       return 0;

    return 1;
}

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

       if (nr==1)
        tipar();
     }
    else
     {
         for (int i=1;i<=n;i++)
             if (folc[i]==0)
                {
                    sol[k]=i;

                    folc[i]=1;

                    if (valid(k))
                      back(k+1);

                    folc[i]=0;
                }
     }
}

int main()
{
    f>>n;

    back(1);

    g<<'\n'<<nr;

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