Pagini recente » Cod sursa (job #1880995) | Cod sursa (job #20023) | Cod sursa (job #1069631) | Cod sursa (job #1768991) | Cod sursa (job #2322940)
#include <iostream>
#include <math.h>
#include <fstream>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n, v[15], sol, diag1[30], diag2[30], col[30];
void afisare() {
for (int i = 1; i <= n; i++)
g << v[i] << ' ';
g << '\n';
}
int valid(int k) {
int i;
for (i = 1; i <= k - 1; i++)
if ((v[i] == v[k]) || (abs(v[k] - v[i]) == (k - i)))
return 0;
return 1;
}
int valid2(int c, int k) {
if(!col[c] && !diag1[c - k + n - 1] && !diag2[c + k])
return 1;
return 0;
}
int solutie(int k) {
if (k == n)
return 1;
return 0;
}
void BK(int k) {
if(k == n + 1) {
sol++;
if(sol == 1) {
afisare();
}
} else {
for(int i = 1; i <= n; i++ ) {
if(valid2(i, k)) {
v[k] = i;
col[i] = diag1[i - k + n - 1] = diag2[i + k] = true;
BK(k + 1);
col[i] = diag1[i - k + n - 1] = diag2[i + k] = false;
}
}
}
}
int main() {
f >> n;
BK(1);
g << sol;
return 0;
}