Cod sursa(job #2811700)

Utilizator ioana.jianuIoana Jianu ioana.jianu Data 2 decembrie 2021 22:20:12
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 40;
int st[NMAX], col[NMAX], diag1[NMAX], diag2[NMAX], n, rez;

void afisare() {
    rez++;
    if (rez == 1) {
        for (int i = 1; i <= n; i++)
            fout << st[i] << " ";
        fout << "\n";
    }
}

int f1(int i, int j) {
    return i + j - 1;
}

int f2(int i, int j) {
    return i + n - j;
}

void bkt(int k) {
    if (k == n + 1)
        afisare();
    else
        for (int i = 1; i <= n; i++) {
            if (col[i] == 0&& diag1[f1(k, i)] == 0 && diag2[f2(k, i)] == 0) {
                st[k] = i;
                col[i] = diag1[f1(k, i)] = diag2[f2(k, i)] = 1;
                bkt(k + 1);
                col[i] = diag1[f1(k, i)] = diag2[f2(k, i)] = 0;
            }
        }
}

int main() {

    fin >> n;
    bkt(1);
    fout << rez;

    return 0;
}