#include<iostream>
#include<math.h>
using namespace std;
#define N 100//n皇后
int sum=0;//第几个解
int x[N]={0};//x[i]=j代表在第i行的j列放置皇后
int judge(int k) //判断新加皇后是否符合要求
{
for(int i=1;i<k;i++)
if(abs(k-i)==abs(x[k]-x[i]) || x[k] == x[i])
return 0;
return 1;
}
int queen(int t) //在第t列放皇后
{
for(int i=1;i<=N;i++){
x[t]=i;
if(judge(t))
if(t!=N) queen(t+1);//如果不是最后一行则继续
else {
sum++;
cout<<"["<<sum<<"]";
for(int j=1;j<=N;j++){
cout<<x[j]<<" ";
}
cout<<endl;
}
}
return sum;
}
int main()
{ int i=1;
queen(i);
return 1;
}
八皇后问题
最新推荐文章于 2014-10-18 11:19:51 发布