AcWing 843. n-皇后问题
原题链接
中等
作者:
dsyami
,
2021-06-03 21:16:48
,
所有人可见
,
阅读 321
#include <iostream>
using namespace std;
const int N = 10;
int n;
char g[N][N];
bool col[N], dg[N], udg[N];
void dfs(int x) //深度遍历层数为行数
{
if (x == n) //深搜出口,搜索到第n行
{
for (int i = 0; i < n; i ++ ) puts(g[i]);
puts("");
return;
}
for (int i = 0; i < n; i ++ ) //i为列数
{
if (!col[i] && !udg[i + x] && !dg[i - x + n])
{
g[x][i] = 'Q';
col[i] = udg[i + x] = dg[i - x + n] = 1;
dfs(x + 1);
col[i] = udg[i + x] = dg[i - x + n] = 0;
g[x][i] = '.';
}
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; i ++ )
for (int j = 0; j < n; j ++ )
g[i][j] = '.';
dfs(0);
return 0;
}