Pagini recente » Cod sursa (job #1448573) | Monitorul de evaluare | Cod sursa (job #1633365) | Cod sursa (job #1625654) | Cod sursa (job #1985546)
#include <cstdio>
int sol[20];
int as,ct,n;
bool col[20],d1[20],d2[20];
void afis()
{
for(int i=1; i<=n; i++) printf("%d ",sol[i]);
printf("\n");
}
void backtrack(int pos,int rr)
{
for(int i=rr; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(col[j]==0&&d1[i-j+n-1]==0&&d2[i+j]==0)
{
col[j]=1;
d1[i-j+n-1]=1;
d2[i+j]=1;
if(ct==0) sol[pos]=j;
if(pos<n) backtrack(pos+1,i+1);
else
{
if(ct==0)
{
for(int k=1; k<=n; k++) printf("%d ",sol[k]);
printf("\n");
}
++ct;
}
col[j]=0;
d1[i-j+n-1]=0;
d2[i+j]=0;
}
}
}
}
int main()
{
freopen ("damesah.in","r",stdin);
freopen ("damesah.out","w",stdout);
scanf("%d",&n);
backtrack(1,1);
printf("%d\n",ct);
}