Cod sursa(job #1213262)

Utilizator cojocarugabiReality cojocarugabi Data 27 iulie 2014 17:57:31
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fi("damesah.in");
ofstream fo("damesah.out");
int n,s[20],v[20];
int k=0,sol=0;
int abs(int x)
{
    if (x<0)
        x=-x;
    return x;
}
bool corespunde(int p)
{
    for (int i=1;i<p;++i)
        if (s[i]==s[p] || (p-i)==abs(s[i]-s[p]))
            return false;
    return true;
}
void back(int p)
{
    if (p>n)
    {
        if (!k)
        {
            k=1;
            for (int i=1;i<=n;++i)
                 fo<<s[i]<<" ";
            fo<<"\n";
        }
        ++sol;
        return;
    }
    for(int i=1;i<=n;++i)
    if (v[i])
    {
        --v[i];
        s[p]=i;
        if (corespunde(p))
            back(p+1);
        ++v[i];
    }
    s[p]=0;
}
int main()
{
   fi>>n;
   memset(v,1,sizeof(v));
   back(1);
   fo<<sol<<"\n";
   fo.close();
}