Pagini recente » Cod sursa (job #485326) | Cod sursa (job #2875848) | Cod sursa (job #1074563) | Cod sursa (job #1229427) | Cod sursa (job #1951752)
#include <bits/stdc++.h>
#define MAXN 14
using namespace std;
int st[MAXN], n, answer;
bool firstD[MAXN*2], secondD[MAXN*2], column[MAXN];
void backtracking(int level)
{
int i;
if(level == n+1) {
if(!answer) {
for(i=1; i<=n; ++i)
printf("%d ", st[i]);
printf("\n");
}
answer++;
return;
}
int x, y;
x = level;
for(y=1; y<=n; ++y)
if(column[y] == 0 && firstD[x + y - 1] == 0 && secondD[n - x + y] == 0) {
column[y] = 1;
firstD[x + y - 1] = 1;
secondD[n - x +y] = 1;
st[level] = y;
backtracking(level+1);
column[y] = 0;
firstD[x + y - 1] = 0;
secondD[n - x +y] = 0;
st[level] = 0;
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &n);
backtracking(1);
printf("%d", answer);
return 0;
}