Pagini recente » Cod sursa (job #2135631) | Cod sursa (job #1079685) | Cod sursa (job #913238) | Cod sursa (job #844328) | Cod sursa (job #1297203)
#include <iostream>
using namespace std;
int N;
int Solutions, First[20];
int Modul(int v) {
if (v < 0)
return -v;
return v;
}
void Back(int i, int queens[]) {
if (i == N + 1) {
if (First[1] == 0) {
for (int j = 1; j <= N; j++)
First[j] = queens[j];
}
Solutions++;
return;
}
for (int c = 1; c <= N; c++) {
bool valid = true;
for (int j = 1; j < i; j++) {
if (queens[j] == c)
valid = false;
if (Modul(i - j) == Modul(c - queens[j]))
valid = false;
}
if (valid) {
queens[i] = c;
Back(i + 1, queens);
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &N);
int queens[20];
Back(1, queens);
for (int i = 1; i <= N; i++)
printf("%d ", First[i]);
printf("\n%d\n", Solutions);
return 0;
}