Pagini recente » Cod sursa (job #228160) | Cod sursa (job #451988) | Cod sursa (job #1163435) | Cod sursa (job #220840) | Cod sursa (job #1238674)
#include <cstdio>
#include <algorithm>
#define MAXN 15
using namespace std;
int n, sol[MAXN], pds[2*MAXN], pdp[2*MAXN], col[MAXN];
int nrs;
void afisare()
{
if(!nrs)
{
for (int i = 1; i <= n; i++)
printf("%d ", sol[i]);
printf("\n");
}
nrs++;
}
void backt(int pos)
{
if (pos == n+1)
{
afisare();
return;
}
for (int i = 1; i <= n; i++)
{
if (!col[i] && !pdp[n+pos-i] && !pds[pos+i-1])
{
col[i] = 1;
pdp[n+pos-i] = 1;
pds[pos+i-1] = 1;
sol[pos] = i;
backt(pos+1);
col[i] = 0;
pdp[n+pos-i] = 0;
pds[pos+i-1] = 0;
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &n);
backt(1);
printf("%d\n", nrs);
return 0;
}