题目描述
blablabla
样例
blablabla
#include <iostream>
using namespace std;
const int N = 10;
int n;
char g[N][N];
bool col[N],dg[N*2],udg[N*2];//记录从左上到右下的对角线是否有皇后(对角线编号为u+i),记录从右上到左下的对角线是否有皇后(对角线编号为n-u+i)
void dfs(int u)
{
if(u == n)
{
for(int i=0;i<n;i++) puts(g[i]);
puts("");
return;
}
for(int i=0;i<n;i++)
{
if(!col[i] && !dg[u+i] && !udg[n-u+i])
{
g[u][i] = 'Q';
col[i] = dg[u+i] = udg[n-u+i] = true;
dfs(u+1);
col[i] = dg[u+i] = udg[n-u+i] = false;
g[u][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;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla