Pagini recente » Cod sursa (job #1092505) | Cod sursa (job #1326586) | Cod sursa (job #567658) | Cod sursa (job #2944813) | Cod sursa (job #1238677)
#include <iostream>
#include <cstdio>
#define NMAX 20
using namespace std;
int sol[NMAX], col[NMAX], pdp[NMAX*2], pds[NMAX*2], nrsol, n;
void afisare()
{
for (int i=1; i<=n; i++)
printf("%d ", sol[i]);
printf("\n");
}
void bt(int k)
{
if (k==n+1)
{
if (++nrsol==1)
afisare();
return;
}
for (int i=1; i<=n; i++)
{
if (!col[i] && !pdp[n+k-i] && !pds[k+i-1])
{
col[i]=pdp[n+k-i]=pds[k+i-1]=1;
sol[k]=i;
bt(k+1);
col[i]=pdp[n+k-i]=pds[k+i-1]=0;
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &n);
bt(1);
printf("%d", nrsol);
return 0;
}