# include <iostream>
using namespace std;
# define flag 1
int n;
int a[100],b[100],c[100],d[100];//重点
int total=0;
void print(){
if(total<=2){//题目要求前三个
for(int k=1; k<=n; k++){
if(k!=n) cout<<a[k]<<" ";
else cout<<a[k]<<endl;
}
}
total++;
}
void queue(int i){
if(i>n){
print();
return;
}
else{
int j;
for(j=1; j<=n; j++){
if(!b[j] && !c[i+j] && !d[i-j+n]){
a[i]=j;
b[j]=flag;
c[i+j]=flag;//左下右上,画格子就能得出
d[i-j+n]=flag;//防止数组里的数字为负数
queue(i+1);
b[j]=0;
c[i+j]=0;
d[i-j+n]=0;
}
}
}
}
int main()
{
cin>>n;
queue(1);
cout<<total;
return 0;
}
不懂之处查阅了视频:【洛谷P1219 八皇后】 https://www.bilibili.com/video/BV1uB4y1z7H1/?share_source=copy_web&vd_source=47859ce1ab05f03eb31349dd833264f2