链接
#include<bits/stdc++.h>
using namespace std;
int ch[10][10],x[10],y[10],a[30],b[10],n;
void print()
{
n++;
printf("No. %d\n",n);
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
printf("%d ",ch[i][j]);
}printf("\n");
}
}
void dfs(int tx,int ty,int t)
{
ch[tx][ty]=1;
t++;
if(t==8)
{
print();
t--;
return;
}
x[tx]=1;
y[ty]=1;
a[tx-ty+10]=1;
b[tx+ty]=1;
for(int i=tx+1;i<=8;i++)
{
for(int j=1;j<=8;j++)
{
if(x[i]==0&&y[j]==0&&a[i-j+10]==0&&b[i+j]==0)
{
dfs(i,j,t);
}
}
}
ch[tx][ty]=0;
t--;
x[tx]=0;
y[ty]=0;
a[tx-ty+10]=0;
b[tx+ty]=0;
}
int main()
{
for(int i=1;i<=8;i++)
{
dfs(1,i,0);
}
}