Pagini recente » Cod sursa (job #1140528) | Cod sursa (job #1368925) | Profil flo3murgoci | Cod sursa (job #41010) | Cod sursa (job #1374390)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int N, sol[15], freq[15], k, rez, diag_principala[100], diag_secundara[100];
int modul(int x) {
return max(x, -x);
}
void afis() {
for(int i = 1; i <= N; ++i) {
fout << sol[i] << ' ';
}
}
void bkt(int pos) {
if(pos == N + 1) {
if(k == 0) afis();
k = 1;
rez++;
}
else {
for(int i = 1; i <= N; ++i) {
if(freq[i] == 0 && diag_principala[i - pos + 1] == 0 && diag_secundara[i + pos - 1] == 0) {// && i - pos + 1 > 0 && i + pos - 1 <= N) {
freq[i] = 1;
sol[pos] = i;
diag_principala[i - pos + 1] = 1;
diag_secundara[i + pos - 1] = 1;
bkt(pos + 1);
freq[i] = sol[pos] = diag_principala[i - pos + 1] = diag_secundara[i + pos - 1] = 0;
}
}
}
}
int main() {
fin >> N;
bkt(1);
fout << '\n' << rez << '\n';
fin.close();
fout.close();
return 0;
}