AcWing 843. n-皇后问题
原题链接
中等
作者:
走不到也得走
,
2019-12-16 15:15:47
,
所有人可见
,
阅读 701
第一种 顺序搜索一行
#include<iostream>
using namespace std;
const int N=10;
int n;
char str[N][N];
bool s[N],dg[N],udg[N];
void DFS(int x)
{
if(x==n){
for(int i=0;i<n;i++)
puts(str[i]);//输出量
puts("");//输出换行
return;
}
for(int i=0;i<n;i++)
{
if(!s[i]&&!dg[x+i]&&!udg[i-x+n]){//对角线和列
str[x][i]='Q';
udg[i-x+n]=dg[x+i]=s[i]=true;
DFS(x+1);
udg[i-x+n]=dg[x+i]=s[i]=false;
str[x][i]='.';//恢复状态
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
str[i][j]='.';
DFS(0);
return 0;
}
%%dalao
%%这是在随y总学习呢