AcWing 843. n-皇后问题
原题链接
中等
作者:
小糖人乌兹
,
2023-03-12 15:04:33
,
所有人可见
,
阅读 139
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int n;
char a[N][N];
bool col[N],dg[N],udg[N];
void dfs(int u){
if(u==n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[i][j]!='Q') cout<<'.';
else cout<<a[i][j];
}
cout<<endl;
}
cout<<endl;
}
for(int i=0;i<n;i++)
if(!col[i]&&!dg[u+i]&&!udg[u-i+8]){
a[u][i]='Q';
col[i]=dg[u+i]=udg[u-i+8]=true;
dfs(u+1);
a[u][i]='.';
col[i]=dg[u+i]=udg[u-i+8]=false;
}
}
int main(){
cin>>n;
dfs(0);
return 0;
}