ly111222 @ 2023-10-19 16:50:23
#include <bits/stdc++.h>
using namespace std;
int mark[15][15],ans[15],n,sum,num;
void dfs(int x){
if(x>n){
sum++;
if(sum<=3){
for(int i=1;i<=n;i++){
cout<<ans[i]<<' ';
}
cout<<'\n';
}
return ;
}
for(int i=1;i<=n;i++){
if(mark[x][i]==0){
ans[x]=i;
//竖列
for(int j=x;j<=n;j++){
mark[j][i]++;
}
//两个斜列
for(int j=x+1;j<=n;j++){
mark[j][i-(j-x)]++;
}
for(int j=x+1;j<=n;j++){
mark[j][i+(j-x)]++;
}
dfs(x+1);
//竖列
for(int j=x;j<=n;j++){
mark[j][i]--;
}
//两个斜列
for(int j=x+1;j<=n;j++){
mark[j][i-(j-x)]--;
}
for(int j=x+1;j<=n;j++){
mark[j][i+(j-x)]--;
}
//ans[x]=0;//回溯
}
}
}
int main(){
cin>>n;
dfs(1);
cout<<sum;
return 0;
}
by myl0219 @ 2023-10-23 16:44:44
没问题对的