33,311
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<cmath>
using namespace std;
int count = 0;
bool IsSafe(int i,int queen[])
{
int j;
for(j=1;j<i;j++)
{
if((queen[i] == queen[j]) || (abs(i-j) == abs(queen[j]-queen[i])))
return false;
else return true;
}
}
void Input(int i,int queen[])
{
int j;
if(i>8)
{
count++;
cout<<"方案"<<count<<": ";
for(j =1;j <=8; j++)
{
cout<<" "<<j<<" "<<queen[j]<<endl;
}
cout<<endl;
int queen[9]={0};
}
else
{
for(j=1;j<=8;j++)
{
queen[i] = j;
if(IsSafe(i,queen))
{
Input(i+1,queen);
}
}
}
}
void main()
{
int queen[9]={0}; //queen[2]=5,表示第2个皇后放在第2行第5列,queen[0]不使用
Input(1,queen);
cout<<"共有"<<count<<"种放置方案."<<endl;
}
bool IsSafe(int i,int queen[])
{
int j;
for(j=1;j<i;j++)
{
if((queen[i] == queen[j]) || (abs(i-j) == abs(queen[j]-queen[i])))
return false;
}
return true;
}