Pagini recente » Cod sursa (job #580667) | Cod sursa (job #578516) | Cod sursa (job #1701511) | Cod sursa (job #3038627) | Cod sursa (job #1198527)
#include <fstream>
using namespace std;
const int MAX_N = 13;
int N, numberOfSolutions, c[MAX_N];
bool viz[MAX_N], firstDiag[MAX_N], secondDiag[MAX_N];
ifstream f("damesah.in");
ofstream g("damesah.out");
void back(int l) {
if (l > N) {
if (++numberOfSolutions == 1) {
for (int i = 1; i <= N; ++i)
g << c[i] << " ";
g << "\n";
}
return;
}
for (int i = 1; i <= N; ++i)
if (!viz[i] && !firstDiag[N - i + l] && !secondDiag[i + l]) {
c[l] = i;
viz[i] = firstDiag[N - i + l] = secondDiag[i + l] = 1;
back(l + 1);
viz[i] = firstDiag[N - i + l] = secondDiag[i + l] = 0;
}
}
int main() {
f >> N;
back(1);
g << numberOfSolutions;
}