Pagini recente » Cod sursa (job #2614574) | Cod sursa (job #2640219) | Cod sursa (job #1543930) | Cod sursa (job #2885711) | Cod sursa (job #2542735)
using namespace std;
#define fisier "damesah"
#ifdef fisier
#include <fstream>
ifstream in(fisier ".in");
ofstream out(fisier ".out");
#else
#include <iostream>
#define in cin
#define out cout
#endif
const int MAX_N = 13;
int col[MAX_N], lin, n, sol;
bool col_ocup[MAX_N], diag_prin_ocup[MAX_N * 2 - 1], diag_sec_ocup[MAX_N * 2 - 1];
void print() {for (int linie = 0; linie < n; linie++) out << col[linie] + 1 << ' '; out << '\n';}
inline bool ocupat() {
return
col_ocup[col[lin]]
|| diag_prin_ocup[lin - col[lin] + n - 1]
|| diag_sec_ocup[lin + col[lin]];
}
inline void set_ocupat(bool val) {
col_ocup[col[lin]]
= diag_prin_ocup[lin - col[lin] + n - 1]
= diag_sec_ocup[lin + col[lin]]
= val;
}
void backtrack() {
lin++;
if (lin == n) {
if (!sol) {
print();
}
sol++;
} else {
for (col[lin] = 0; col[lin] < n; col[lin]++) {
if (!ocupat()) {
set_ocupat(true);
backtrack();
set_ocupat(false);
}
}
}
lin--;
}
int main() {
in >> n;
lin = -1;
backtrack();
out << sol;
}
//