Cod sursa(job #2292329)

Utilizator Leonard1998Olariu Leonard Leonard1998 Data 29 noiembrie 2018 13:36:40
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#define NMAX 15

using namespace std;

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

int n, queenCol[NMAX], countConfig;
bool col[NMAX], mainDiag[2*NMAX], secDiag[2*NMAX];

void placeQueen(int k) {
    if (k > n) {
        ++countConfig;
        if (countConfig == 1) {
            for (int i = 1; i <= n; ++i) fout << queenCol[i] << ' ';
            fout << '\n';
        }
    }
    else {
        for (int c = 1; c <= n; ++c) {
            if (!col[c] && !mainDiag[c - k + n] && !secDiag[k + c]) {
                queenCol[k] = c;

                col[c] = mainDiag[c - k + n] = secDiag[k + c] = true;
                placeQueen(k+1);
                col[c] = mainDiag[c - k + n] = secDiag[k + c] = false;
            }
        }
    }
}

int main()
{
    fin >> n;
    placeQueen(1);
    fout << countConfig << '\n';
    return 0;
}