Cod sursa(job #1644290)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 9 martie 2016 22:23:26
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 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)
{
    if (k == n+1)
    {
        if (fol == 0)
            for (int fol = 1, i = 1; i <= n; i++)
                fprintf(g, "%d ", sol[i]);
        nr++;
    }
    else
    {
        for (int i = 1; i <= n; i++)
        if (diag1[n-k+i] == 0 && diag2[k+i-1] == 0 && lin[i] == 0)
        {
            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;
}