Cod sursa(job #1992093)

Utilizator Mihai_PredaPreda Mihai Dragos Mihai_Preda Data 19 iunie 2017 13:37:50
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>

using namespace std;

const int nMax = 20;

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

int n;
int rasp;

bool vizCol[nMax];
bool vizDiagPrinc[2 * nMax];
bool vizDiagSec[2 * nMax];

int pos[nMax];

void backtr(int d)
{
    if(d == n + 1)
    {
        if(rasp == 0)
            for(int i = 1; i <= n; ++i)
                out << pos[i] << " ";
        ++rasp;
        return;
    }
    for(int i = 1; i <= n; ++i)
        if(!vizCol[i] && !vizDiagPrinc[d+i] && !vizDiagSec[d-i+n])
        {
            vizCol[i] = vizDiagPrinc[d+i] = vizDiagSec[d-i+n] = true;
            pos[d] = i;
            backtr(d + 1);
            vizCol[i] = vizDiagPrinc[d+i] = vizDiagSec[d-i+n] = false;
        }
}

int main()
{
    in >> n;
    backtr(1);
    out << "\n" << rasp;
    return 0;
}