Pagini recente » Cod sursa (job #1658100) | Cod sursa (job #508188) | Cod sursa (job #2872789) | Cod sursa (job #2656520) | Cod sursa (job #3145113)
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int const SIZE = 13;
int N, ans, firstSol[SIZE + 5];
bool cols[SIZE + 5], diag1[2 * SIZE + 1], diag2[2 * SIZE + 1];
inline void back(int const &k) {
if (k == N) {
ans ++;
if (ans == 1) {
for (int i = 0; i < N; i++)
fout << firstSol[i] + 1 << ' ';
fout << '\n';
}
return;
}
for (int i = 0; i < N; i++) {
if (!cols[i] && !diag1[i + k] && !diag2[i - k + N - 1]) {
cols[i] = diag1[i + k] = diag2[i - k + N - 1] = 1;
firstSol[k] = i;
back(k + 1);
cols[i] = diag1[i + k] = diag2[i - k + N - 1] = 0;
}
}
}
int main() {
fin >> N;
back(0);
fout << ans << '\n';
fin.close();
fout.close();
return 0;
}