计蒜客习题:八皇后问题
题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191011111445424.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoaWRvbmdoYW5n,size_16,color_FFFFFF,t_70)
样例
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191011111501989.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoaWRvbmdoYW5n,size_16,color_FFFFFF,t_70)
代码
#include<iostream>
using namespace std;
int sum=0,ma=0,a[20],x1[20],y1[20],map[10][10];
void dfs(int deep)
{
if(deep>=8)
{
if(sum>ma) ma=sum;
return;
}
for(int i=0;i<8;i++)
{
if(x1[i+deep]==false&&y1[i-deep+8]==false&&a[i]==false)
{
x1[deep+i]=true;
y1[i-deep+8]=true;
a[i]=true;
sum+=map[deep][i];
dfs(deep+1);
sum-=map[deep][i];
a[i]=false;
x1[deep+i]=false;
y1[i-deep+8]=false;
}
}
}
int main()
{
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
cin>>map[i][j];
dfs(0);
printf("%d",ma);
return 0;
}