Cod sursa(job #1860729)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 28 ianuarie 2017 12:39:11
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;

ofstream fout("damesah.out");

const short N_MAX = 15;

int n, answer;
int queen[N_MAX];
bool first = true;
bool column[N_MAX], main_diag[N_MAX * 2], secondary_diag[N_MAX * 2];

inline void backt(int level) {
    if (level == n + 1) {
        if (first) {
            for (int i = 1; i <= n; ++i) {
                fout << queen[i] << ' ';
            }

            fout << '\n';

            first = false;
        }
        ++answer;
    } else {
        for (int i = 1; i <= n; ++i) {
            if (!column[i] && !main_diag[i + n - level] && !secondary_diag[level + i]) {
                queen[level] = i;

                column[i] = main_diag[i + n - level] = secondary_diag[level + i] = true;
                backt(level + 1);
                column[i] = main_diag[i + n - level] = secondary_diag[level + i] = false;
            }
        }
    }
}

int main() {
    ifstream fin("damesah.in");

    fin >> n;

    backt(1);

    fout << answer;

    return 0;
}