Cod sursa(job #1123865)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 26 februarie 2014 10:28:12
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <cmath>
#include <cstdio>

using namespace std;

int n, sol[1000], lin, ok, nr;
int d2[2014], d1[2014], col[2014];


//
//int valid(int l, int c)
//{
//    if(d1[l+c-1] ==1 || d2[n-c+l] ==1 || col[c]==1)
//        return 0;
//    return 1;
//}

//void afis()
//{
//    for(int i=1; i<=n; i++)
//        printf("%d ", sol[i]);
//}
//
void backt(int lin)
{
    if(lin==n+1){
        if(ok==0){
            for(int i=1; i<=n;)
                printf("%d ", sol[i++]);
            printf("\n");
        }
        ok++;
        return;
    }
    for(int i=1; i<=n; i++)
    {
        if(d1[lin+i-1] ==0 && d2[n-i+lin] ==0 && col[i]==0)
        {
           sol[lin] = i;

        d1[lin+i-1] =1;
        d2[n-i+lin] =1;
        col[i] =1;

           backt(lin+1);


        d1[lin+i-1] =0;
        d2[n-i+lin] =0;
        col[i] =0;

           sol[lin] = 0;
        }
    }
}

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

    scanf("%d", &n);
    backt(1);
    printf("%d", ok);
    return 0;
}