AcWing 843. n-皇后问题
原题链接
中等
作者:
GK50
,
2024-03-02 09:05:21
,
所有人可见
,
阅读 23
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 15;
int d[10*N],nd[10*N];
int col[N];
char s[N][N];
void dfs(int x,int n){
if(x == n+1){
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
cout << s[i][j];
}
cout << endl;
}
cout << endl;
return;
}
for(int i = 1;i <= n;i++){
if(!col[i] && !d[i - x + n] && !nd[i + x]){
col[i] = 1;
s[x][i] = 'Q';
d[i - x + n] = 1;
nd[i + x] = 1;
dfs(x+1,n);
col[i] = 0;
s[x][i] = '.';
d[i - x + n] = 0;
nd[i + x] = 0;
}
}
}
int main()
{
int n;
cin >> n;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
s[i][j] = '.';
}
}
dfs(1,n);
}