AcWing 843. n-皇后问题
原题链接
中等
作者:
林黛玉倒拔线段树
,
2022-02-23 20:05:27
,
所有人可见
,
阅读 110
#include<bits/stdc++.h>
using namespace std;
int n,ans[100];
bool lie[100],zd[100],fd[100];
void dfs(int hang)
{
if(hang==n+1)
{
for(int i=1;i<hang;i++)
{
for(int j=1;j<ans[i];j++) printf(".");
printf("Q");
for(int j=ans[i];j<n;j++) printf(".");
printf("\n");
}
printf("\n");
return;
}
for(int i=1;i<=n;i++)
{
if(!lie[i]&&!zd[hang+n-i]&&!fd[hang+i])
{
lie[i]=true,zd[hang+n-i]=true,fd[hang+i]=true;
ans[hang]=i;
dfs(hang+1);
lie[i]=false,zd[hang+n-i]=false,fd[hang+i]=false;
}
}
}
int main()
{
cin>>n;
dfs(1);
}