Cod sursa(job #1093811)

Utilizator geniucosOncescu Costin geniucos Data 28 ianuarie 2014 17:11:32
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<cstdio>
using namespace std;
int sol,i,n,v[15],ap[15],ap1[40],ap2[40];
int mod(int x)
{
    if(x<0) return -x;
    return x;
}
int d1(int x,int y)
{
    return x+y;
}
int d2(int x,int y)
{
    return x-y+n;
}
void back(int poz)
{
    if(poz==n+1)
    {
        sol++;
        if(sol==1)
        {
            for(i=1;i<=n;i++)
                printf("%d ",v[i]);
            printf("\n");
        }
        return ;
    }
    for(int i=1;i<=n;i++)
        if(ap[i]==0&&ap1[d1(poz,i)]==0&&ap2[d2(poz,i)]==0)
        {
            ap[i]=1;
            ap1[d1(poz,i)]=1;
            ap2[d2(poz,i)]=1;
            v[poz]=i;
            back(poz+1);
            ap[i]=0;
            ap1[d1(poz,i)]=0;
            ap2[d2(poz,i)]=0;
        }
}
int main()
{
freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
back(1);
printf("%d\n",sol);
return 0;
}