Cod sursa(job #1725978)

Utilizator silkMarin Dragos silk Data 6 iulie 2016 21:38:43
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#define NMax 15

int queen[NMax];
int col[NMax];
int sec[NMax*2];
int princ[NMax*2];
int NrSol,n,ok,dif;

void Gen(int k)
{
    if( k == n )
    {
        if(!ok)
        {
            for( int i = 0; i < n; ++i ) printf("%d ",queen[i]+1);
            printf("\n");
            ok = 1;
        }
        ++NrSol;
    }

    else
        for( int i = 0; i < n; ++i )
            if( !col[i] && !sec[ k + i ] && !princ[ i - k + n - 1 ] )
            {
                queen[k] = i;
                col[i] = 1;
                sec[ k + i ] = 1;
                princ[ i - k + n - 1 ] = 1;

                Gen(k+1);

                col[i] = 0;
                sec[ k + i ] = 0;
                princ[ i - k + n - 1 ] = 0;
            }
}

int main(){
    freopen("damesah.in","r",stdin);
    freopen("damesah.out","w",stdout);

    scanf("%d",&n);
    Gen(0);

    printf("%d\n",NrSol);


return 0;
}