#include <iostream>
using namespace std;
#define QUEEN_NUM 8
int position[QUEEN_NUM];//每一行的皇后放在第几列
int totalNum=0;
void placeQueen(const int row)//放在第几行
{
if (row>=QUEEN_NUM)
{
for (int i=0;i<QUEEN_NUM;i++)
{
cout<<position[i]<<" ";
}
cout<<endl;
totalNum++;
return;//放置完了
}
bool canPutHere=true;
for (int i=0;i<QUEEN_NUM;i++)//检查当前行的每一列是否与前面已经放置的某一个皇后冲突
{
canPutHere=true;
for (int r=0;r<row;r++)//已经放了row-1个皇后
{
if (position[r]==i//在同一列
||position[r]==i+r-row//在同一对角线上
||position[r]==i-(r-row))
{
canPutHere=false;
break;
}
}
if (canPutHere)
{
position[row]=i;
placeQueen(row+1);
}
}
}
void main()
{
placeQueen(0);
cout<<"Total Num: "<<totalNum<<endl;
}
Homepage:
http://www.zoumin.org/