Cod sursa(job #2005934)

Utilizator andreistanStan Andrei andreistan Data 28 iulie 2017 15:04:28
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int *x, n, nrsol = 0;
const int MAX_N = 14;
bool col[MAX_N], diagp[MAX_N * 2], diags[MAX_N * 2];

ifstream f("damesah.in");
ofstream g("damesah.out");

void afis(int x[], int n)
{
    for(int i = 1; i <= n; i++)
        g << x[i] << ' ';
    g << '\n';
}

void backt(int l, int n)
{
    if(l > n)
    {
        if(nrsol == 0)
            afis(x,n);
        nrsol++;
    }
    else
    {
        for(int c = 1; c <= n; c++)
        {
            if(!col[c] && !diagp[c - l + n - 1] && !diags[l + c])
            {
                x[l] = c;
                col[c] = diagp[c - l + n - 1] = diags[l + c] = 1;
                backt(l + 1, n);
                col[c] = diagp[c - l + n - 1] = diags[l + c] = 0;
            }
        }
    }
}

int main()
{
    f >> n;
    x = new int [n + 1];
    backt(1, n);
    g << nrsol;
    return 0;
}