Cod sursa(job #1198531)

Utilizator SpiderManSimoiu Robert SpiderMan Data 16 iunie 2014 00:50:07
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;

const int MAX_N = 13;

int N, numberOfSolutions, c[MAX_N];
bool viz[MAX_N], firstDiag[MAX_N << 1], secondDiag[MAX_N << 1];

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

void back(int l) {
    if (l == N + 1) {
        if (++numberOfSolutions == 1) {
            for (int i = 1; i <= N; ++i)
                g << c[i] << " ";
            g << "\n";
        }
        return;
    }
    for (int i = 1; i <= N; ++i)
        if (!viz[i] && !firstDiag[N - i + l] && !secondDiag[i + l]) {
            c[l] = i;
            viz[i] = firstDiag[N - i + l] = secondDiag[i + l] = 1;
            back(l + 1);
            viz[i] = firstDiag[N - i + l] = secondDiag[i + l] = 0;
        }
}

int main() {
    f >> N;
    back(1);
    g << numberOfSolutions;
}