Pagini recente » Cod sursa (job #1384397) | Cod sursa (job #1495487) | Cod sursa (job #1696350) | Cod sursa (job #1098005) | Cod sursa (job #1096491)
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n;
int x[15];
bool vizcol[15];
bool vizdiag1[30];
bool vizdiag2[30];
int nrsol = 0;
void print()
{
if (nrsol == 0) {
for(int i = 1; i <= n; i++) {
g << x[i] << ' ';
}
g << endl;
}
nrsol++;
}
void back(int k = 1) {
for (int i = 1; i <= n; i++) {
x[k] = i;
if (vizcol[i] == true || vizdiag2[i + k - 1] || vizdiag1[i - k - 1 + n]) {
continue;
}
vizcol[i] = true;
vizdiag2[i + k - 1] = true;
vizdiag1[i - k - 1 + n] = true;
if (k < n) {
back(k + 1);
} else {
print();
}
vizcol[i] = false;
vizdiag2[i + k - 1] = false;
vizdiag1[i - k - 1 + n] = false;
}
}
int main()
{
f >> n;
back();
g << nrsol << endl;
return 0;
}