Cod sursa(job #1390745)

Utilizator mihail.jianuJianu Mihail mihail.jianu Data 17 martie 2015 11:56:33
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
const int N=13;
int st[N+1];
bool col[N+1];
bool diag[2][2*N];
int n,nres;
bool f=true;
void print(){
    for(int i=1;i<=n;i++)
        printf("%d ",st[i]);
    printf("\n");
}
int k;
void bkt(){
    if(k==n+1){
        if(f)
            print();
        f=false;
        nres++;
        return;
    }
    for(int i=1;i<=n;i++)
        if(!col[i]&&!diag[0][k+i-1]&&!diag[1][k+n-i]){
            st[k]=i;
            col[i]=true;
            diag[0][k+i-1]=true;
            diag[1][k+n-i]=true;
            k++;
            bkt();
            k--;
            col[i]=false;
            diag[0][k+i-1]=false;
            diag[1][k+n-i]=false;
        }
}
int main(){
    freopen("damesah.in","r",stdin);
    freopen("damesah.out","w",stdout);
    scanf("%d",&n);
    k=1;
    bkt();
    printf("%d",nres);
    return 0;
}