Pagini recente » Cod sursa (job #338276) | Cod sursa (job #2984692) | Cod sursa (job #580274) | Cod sursa (job #1819426) | Cod sursa (job #1860669)
#include <bits/stdc++.h>
using namespace std;
ofstream fout("damesah.out");
const short N_MAX = 15;
short n, answer;
short queen[N_MAX];
bool first = true;
bool column[N_MAX], main_diag[N_MAX * 2], secondary_diag[N_MAX * 2];
inline void backt(short 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;
}