代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int n;
int a[N];
int b[N];
int c[N];
int d[N];
int total=0;
void dfs(int i){
if(i>n){
total++;
if(total<=3){
for(int k=1;k<=n;k++){
cout<<a[k]<<' ';
}
cout<<endl;
}
return;
}
for(int j=1;j<=n;j++){
if(b[j]==0 && c[i+j]==0 && d[i-j+2*n]==0){
a[i] = j;
b[j] = 1;
c[i+j] = 1;
d[i-j+2*n] = 1;
dfs(i+1);
b[i] = 0;
c[i+j] = 0;
d[i-j+n] = 0;
}
}
}
int main(){
cin>>n;
dfs(1);
cout<<total;
return 0;
}
感觉没错误,各位dalao帮忙看一下谢