Pagini recente » Cod sursa (job #783522) | Cod sursa (job #412652) | Cod sursa (job #2886208) | Cod sursa (job #917573) | Cod sursa (job #1106020)
#include <fstream>
#define in "damesah.in"
#define out "damesah.out"
#define MAX_SIZE 50
std :: ifstream f(in);
std :: ofstream g(out);
int N;
int Count, Sol[MAX_SIZE];
bool Col[MAX_SIZE], Diag_Prin[MAX_SIZE], Diag_Sec[MAX_SIZE];
void Back(int linia) {
if(linia == N + 1) {
if(Count < 1) {
for(int i = 1; i <= N; ++i) g << Sol[i] << ' ';
g << '\n';
}
++Count;
}
else {
for(int c = 1; c <= N; ++c) {
if(!Col[c] && !Diag_Prin[linia - c + N] && !Diag_Sec[linia + c]){
Sol[linia] = c;
Col[c] = Diag_Prin[linia - c + N] = Diag_Sec[linia + c] = 1;
Back(linia + 1);
Col[c] = Diag_Prin[linia - c + N] = Diag_Sec[linia + c] = 0;
}
}
}
}
int main() {
f >> N;
Back(1);
g << Count << '\n';
g.close();
return 0;
}