#include
#include
#define max 15
int kp[max];
int vr[max], dij1[2*max-1], dij2[2*max-1];
int rn;
void print (int n)
{
int i, j;
for (i=0; i{
for (j=0; jif (kp[j]==i)
printf("1 ");
else
printf("0 ");
printf("\n");
}
getch();
printf("\n\n\n");
}
void place(int n)
{
int i, j, k;
j=0;
kp[j]=0;
while (j>=0)
{
for (i=kp[j];i{
if (!vr[i] && !dij1[i+j] && !dij2[j-i+n-1])
{
if (j{
kp[j]=i;
vr[i]=1;
dij1[i+j]=1;
dij2[j-i+n-1]=1;
break;
}
else
{
kp[j]=i;
rn++;
print(n);
}
}
}
if (ikp[++j]=0;
else
{
if(--j>=0)
{
i=kp[j];
vr[i]=0;
dij1[i+j]=0;
dij2[j-i+n-1]=0;
kp[j]++;
}
}
}
}
void put (int n)
{
int i, j;
rn=0;
for (i=0; ivr[i]=dij1[i]=dij2[i]=0;
for (; i<2*n-1;i++)
dij1[i]=dij2[i]=0;
place(n);
}
void main()
{
int n;
clrscr();
printf("Type in the size of the chessboard, please!");
scanf("%d",&n);
put(n);
getch();
}