Pagini recente » Cod sursa (job #787131) | Cod sursa (job #659686) | Cod sursa (job #1140553) | Cod sursa (job #2512282) | Cod sursa (job #1860613)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
const short N_MAX = 15;
short n, answer;
short queen[N_MAX];
bitset <N_MAX> column;
bitset <N_MAX * 2> main_diag, secondary_diag;
inline void backt(short level) {
if (level == n + 1) {
if (answer < 1) {
for (int i = 1; i <= n; ++i) {
fout << queen[i] << ' ';
}
fout << '\n';
}
++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() {
fin >> n;
backt(1);
fout << answer;
return 0;
}