我忘记写return了
但它AC了
#include<bits/stdc++.h>
using namespace std;
int a[130];
bool h[130],l[130],r[130];
int tot=0;
int n;
void dfs(int i){
if(i>n){
if(tot<=2){
for(int k=1;k<=n;k++){
cout<<a[k]<<" ";
}
cout<<endl;
}
tot++;
}
for(int j=1;j<=n;j++){
if((!h[j])&&(!l[i+j])&&(!r[i-j+n])){
a[i]=j;
h[j]=1;
l[i+j]=1;
r[i-j+n]=1;
dfs(i+1);
h[j]=0;
l[i+j]=0;
r[i-j+n]=0;
}
}
}
int main(){
cin>>n;
dfs(1);
cout<<tot;
return 0;
}
就离谱