Cod sursa(job #1680112)

Utilizator GinguIonutGinguIonut GinguIonut Data 8 aprilie 2016 15:25:47
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>

#define nMax 14
using namespace std;
int Sol[nMax], n, nrSol;
bool main_diag[2*nMax], sec_diag[2*nMax], col[nMax];
void write(int k)
{
    nrSol++;

    if(nrSol==1)
    {
        for(int i=1;i<=k;i++)
            printf("%d ", Sol[i]);
        printf("\n");
    }
}
void back(int k)
{
    if(k==n+1)
    {
        write(k-1);
        return;
    }

    for(int i=1;i<=n;i++)
    {
        if(main_diag[i+n-k]==0 && sec_diag[i+k-1]==0 && col[i]==0)
        {
            Sol[k]=i;
            main_diag[i+n-k]=sec_diag[i+k-1]=col[i]=1;
            back(k+1);
            main_diag[i+n-k]=sec_diag[i+k-1]=col[i]=0;
        }
    }
}
int main()
{
    freopen("damesah.in", "r", stdin);
    freopen("damesah.out", "w", stdout);
    scanf("%d", &n);
    back(1);
    printf("%d", nrSol);
    return 0;
}