AcWing 843. n-皇后问题
原题链接
中等
作者:
Air_45
,
2024-10-06 22:07:20
,
所有人可见
,
阅读 5
#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int n;
char g[N][N];
bool col[N], dg[N], udg[N];
void dfs(int x) {
if (x == n) {
for (int i = 0; i < n; i++) puts(g[i]);
puts("");
return;
}
for (int y = 0; y < n; y++) {
if (!col[y] && !dg[x + y] && !udg[n - x -1 + y]) {
g[x][y] = 'Q';
col[y] = dg[x + y] = udg[n - x -1 + y] = 1;
dfs(x + 1);
g[x][y] = '.';
col[y] = dg[x + y] = udg[n - x -1 + y] = 0;
}
}
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
g[i][j] = '.';
dfs(0);
return 0;
}