#include <iostream>
#include <algorithm>
using namespace std;
int n,num[15],ans=0;
bool lie[20],zhu[40],fu[40];
void print()
{
for(int i=1;i<=n;i++)
cout<<num[i]<<' ';
cout<<endl;
}
void dfs(int i)//第i个棋子待放,放在第i行
{
if(i==n+1)//结束条件
{
ans++;
if(ans<=3)print();
return;
}
else
{
for(int j=1;j<=n;j++)
{
if(!lie[j]&&!zhu[i-j+n]&&!fu[i+j])
{
zhu[i-j+n]=fu[i+j]=lie[j]=true;
num[i]=j;
dfs(i+1);
zhu[i-j+n]=fu[i+j]=lie[j]=false;
}
}
}
}
int main()
{
cin>>n;
dfs(1);
cout<<ans;
}
八皇后问题
最新推荐文章于 2023-12-08 23:18:29 发布