Cod sursa(job #1197323)

Utilizator alex_bucevschiBucevschi Alexandru alex_bucevschi Data 11 iunie 2014 18:09:07
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>

using namespace std;
int n,i,dame[20],sol;
bool diag1[30],diag2[30],col[20];
void back(int l)
{
    if(l==n+1)
    {
        if(!sol)
        {
            for(i=1;i<=n;i++)
                printf("%d ",dame[i]);
            printf("\n");
        }
        sol++;
        return;
    }
    for(int i=1;i<=n;i++)
    {
        if(!col[i]&&!diag1[n-l+i]&&!diag2[l+i-1])
        {
            dame[l]=i;
            col[i]=1;
            diag1[n-l+i]=1;
            diag2[l+i-1]=1;
            back(l+1);
            diag1[n-l+i]=0;
            diag2[l+i-1]=0;
            col[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;
}