N皇后问题(DFS)
题目描述:

输入样例:
4
期望输出:
. Q . .
. . . Q
Q . . .
. . Q .
. . Q .
Q . . .
. . . Q
. Q . .
代码实现:
#include<bits/stdc++.h>
using namespace std;
const int N =10;
int n;
int col[N],d1[N],d2[N];
char s[N][N];
void dfs(int u)
{
if(u==n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<s[i][j]<<' ';
}
cout<<endl;
}
cout<<endl;
return ;
}
for(int i=0;i<n;i++)
{
if(col[i]==0 && d1[u+i]==0&&d2[n-u+i]==0)
{
s[u][i]='Q';
col[i]=1,d1[u+i]=1,d2[n-u+i]=1;
dfs(u+1);
col[i]=0,d1[u+i]=0,d2[n-u+i]=0;
s[u][i]='.';
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
s[i][j]='.';
dfs(0);
}

浙公网安备 33010602011771号