代码:
#include<iostream>
#include<cmath>
using namespace std;
int n=8,count=1;//count记录解的组数
int queenPos[100];
void NQueen(int k);
int main()
{
NQueen(0);
return 0;
}
void NQueen(int k){
int i;
if(k==n){
cout<<"No. "<<count++<<endl;
for(i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==queenPos[j]) cout<<"1 ";//注意输出应该是纵向的!!
else cout<<"0 ";
}
cout<<endl;
}
return ;
}
for(i=0;i<n;i++){
int j;
for(j=0;j<k;j++)
if(queenPos[j]==i||abs(queenPos[j]-i)==abs(k-j))
break;//避免两皇后互吃
if(j==k){
queenPos[k]=i;//记录皇后位置
NQueen(k+1);
}
}
}