格式采用了mooc的和oj上的不同
#include<iostream>
#include<cmath>
#define N 4
using namespace std;
int queenPos[100]; //用来存放算好的皇后位置,最左上角为(0,0)
void NQueen(int k);
int main()
{
NQueen(0);
return 0;
}
void NQueen(int k) //在0~k-1行皇后已经摆好的情况下,摆第k行及其后的皇后
{
if(k==N) //有N个皇后已经摆好
{
for(int i=0;i<N;i++)
cout << queenPos[i]+1 << " ";
cout << endl;
return;
}
for(int j=0;j<N;j++) //逐尝试第k个皇后在j列的位置
{
int i;
for(i=0;i<k;i++)
{
if(queenPos[i]==j||abs(queenPos[i]-j)==abs(k-i))
{
break;
}
}
if(i==k)
{
queenPos[k]=j;
NQueen(k+1);
}
}
}