Cod sursa(job #3140870)

Utilizator Mihai_PopescuMihai Popescu Mihai_Popescu Data 10 iulie 2023 13:03:50
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
using namespace std;

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

bool coloana[15];
bool diagonala1[30];
bool diagonala2[30];
int nr_sol = 0;
int regine[15];

void afis(int n) {
    for (int i = 1; i <= n; ++i) {
        fout << regine[i] << ' ';
    }
    fout << '\n';
}

void back(int k, int n) {
    if (k == n + 1) {
        nr_sol++;
        if (nr_sol == 1) {
            afis(n);
        }
    } else {
        for (int i = 1; i <= n; ++i) {
            if (coloana[i] == 0 && diagonala1[n + k - i] == 0
                && diagonala2[k + i] == 0) {
                coloana[i] = 1;
                diagonala1[n + k - i] = 1;
                diagonala2[k + i] = 1;
                regine[k] = i;

                back(k + 1, n);

                coloana[i] = 0;
                diagonala1[n + k - i] = 0;
                diagonala2[k + i] = 0;
            }
        }
    }
}

int main() {
    int n;
    fin >> n;

    back(1, n);

    fout << nr_sol;
    return 0;
}