#include<bits/stdc++.h>
using namespace std;
int n,ans=0,a[23];
int b1[23],b2[23],b3[23];//记录同一列、对角线是否被占用
void dfs(int x){//第x行的皇后放哪里
if(x>n){//所有皇后放置完毕
ans++;
if(ans<=3){//输出前三种答案
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
return;
}
for(int i=1;i<=n;i++){
if(b1[i]==0&&b2[x+i]==0&&b3[**x-i+n+1**]==0){
a[x]=i;
b1[i]=1,b2[x+i]=1,b3[x-i+n+1]=1;
dfs(x+1);
b1[i]=0,b2[x+i]=0,b3[x-i+n+1]=0;
}
}
}
int main(){
cin>>n;
dfs(1);
cout<<ans;
return 0;
}****
为什么斜线对角线有一条要用x-y+n-1,为什么不是x-y+n,而且为什么数组下标会出现负