User586768 @ 2023-07-25 19:18:38
#include <bits/stdc++.h>
using namespace std;
int n,cnt=0,vis[40][40];
bool ji(int x,int y){
bool f=true;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(abs(j-i)==(x-y)||j+i==x+y){
f=false;
}
}
}
return f;
}
bool check(int x,int y){
return vis[y-1][x]!=1&&ji(x,y);
}
void dfs(int x,int y){
if(y==n){
if(cnt<3){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(vis[i][j]==1){
cout<<x<<' ';
}
}
cout<<endl;
}
}
cnt++;
}
for(int i=0;i<n;i++){
if(check(i+1,y)){
vis[y][i]=1;
dfs(i+1,y+1);
vis[y][i]=0;
}
}
}
int main(){
cin>>n;
dfs(0,0);
cout<<cnt;
return 0;
}
by zqh123b @ 2023-07-26 08:10:19
@zk123bc 参考tj