Cod sursa(job #1133795)

Utilizator Vladinho97Iordan Vlad Vladinho97 Data 5 martie 2014 17:10:50
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int st[20],sol=0,n,viz[20],d1[40],d2[40];
void backt(int k)
{
    int i;
    if(k==n+1)
    {
        sol++;
        if(sol==1)
          for(i=1;i<=n;++i)
            printf("%d ",st[i]);
    }
    else
    {
        for(i=1;i<=n;i++)
            if(viz[i]==false&&d1[k+i]==false&&d2[k-i+n]==false)
            {
                viz[i]=true;
                d1[k+i]=true;
                d2[k-i+n]=true;
                st[k]=i;
                backt(k+1);
                st[k]=0;
                viz[i]=false;
                d1[k+i]=false;
                d2[k-i+n]=false;
            }
    }
}
int main()
{
    freopen("damesah.in","r",stdin);
    freopen("damesah.out","w",stdout);
    scanf("%d",&n);
    backt(1);
    printf("\n%d",sol);
}