Pagini recente » Cod sursa (job #1079408) | Cod sursa (job #1016821) | Cod sursa (job #1964666) | Cod sursa (job #530439) | Cod sursa (job #2360570)
#include <fstream>
using namespace std;
ifstream in ( "damesah.in" );
ofstream out ( "damesah.out" );
const int N_MAX = 15;
int N;
int poz[N_MAX];
bool hasC[N_MAX], hasP[2 * N_MAX], hasS[2 * N_MAX];
int sol;
inline int hashP(int i, int j) { return N + i - j; }
inline int hashS(int i, int j) { return i + j; }
void place(int line) {
if (line == N + 1) {
++sol;
if (sol == 1) {
for (int i = 1; i <= N; ++i)
out << poz[i] << ' ';
out << '\n';
}
return;
}
for (int i = 1; i <= N; ++i)
if (!hasC[i] && !hasP[hashP(line, i)] && !hasS[hashS(line, i)]) {
hasC[i] = hasP[hashP(line, i)] = hasS[hashS(line, i)] = true;
poz[line] = i;
place(line + 1);
hasC[i] = hasP[hashP(line, i)] = hasS[hashS(line, i)] = false;
}
}
int main() {
in >> N;
place(1);
out << sol;
}