Cod sursa(job #1194936)

Utilizator xtreme77Patrick Sava xtreme77 Data 5 iunie 2014 13:44:43
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#define MAX 14
using namespace std;
bool diagp[2*MAX],diags[2*MAX],col[MAX];
short int sol[MAX+MAX];
int nrsol,n;
void back(int k);
int main()
{
    freopen("damesah.in","r",stdin);
    freopen("damesah.out","w",stdout);
    scanf("%d",&n);
    back(1);
    printf("%d\n",nrsol);
    return 0;
}
void back(int k){
    if(k==n+1){
        if(++nrsol==1){
            for(int i=1;i<=n;printf("%hd ",sol[i]),++i);
            printf("\n");
        }
    }
    else {
        for(int i=1;i<=n;++i)
            if(!col[i] and !diagp[i-k+n] and !diags[i+k]){
                diags[i+k]=col[i]=diagp[i-k+n]=true;
                sol[k]=i;
                back(k+1);
                diags[i+k]=col[i]=diagp[i-k+n]=false;
            }
    }
}