Cod sursa(job #1644311)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 9 martie 2016 22:28:08
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>

using namespace std;

short n;
int nr;
int sol[15];
FILE* f=fopen("damesah.in","r");
FILE* g=fopen("damesah.out","w");
bool diag1[30], diag2[30], lin[20], fol;

void bkt(int k)
{
    int i;
    if (k == n+1)
    {
        if (fol == 0)
            for (fol = 1, i = 1; i <= n;)
                fprintf(g, "%d ", sol[i++]);
        nr++;
    }
    else
    {
        for (i = 1; i <= n; ++i)
        if (!diag1[n-k+i] && !diag2[k+i-1] && !lin[i])
        {
            diag1[n-k+i] = diag2[k+i-1] = lin[i] = 1;
            sol[k] = i;
            bkt(k+1);
            diag1[n-k+i] = diag2[k+i-1] = lin[i] = 0;
        }
    }
}

int main()
{
    fscanf(f, "%d", &n);
    bkt(1);
    fprintf(g,"\n%d", nr);
    return 0;
}