Pagini recente » Cod sursa (job #1540709) | Cod sursa (job #532454) | Cod sursa (job #2348827) | Cod sursa (job #2824775) | Cod sursa (job #2105593)
#include <fstream>
#define limit 14
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n, nr, queen[limit];
bool col[limit], main_diag[limit * 2], sec_diag[limit * 2];
void backtrack(int line, int n)
{
int column;
if (line == n) {
if (nr < 1) {
for (column = 0; column < n; column++)
g << queen[column] + 1 << ' ';
g << '\n';
}
nr++;
}
else {
for (column = 0; column < n; column++) {
if (!col[column] && !main_diag[column - line + n - 1] && !sec_diag[line + column]) {
queen[line] = column;
col[column] = main_diag[column - line + n - 1] = sec_diag[line + column] = true;
backtrack(line + 1, n);
col[column] = main_diag[column - line + n - 1] = sec_diag[line + column] = false;
}
}
}
}
int main()
{
f >> n;
f.close();
backtrack(0, n);
g << nr;
g.close();
return 0;
}