描述:没什么特别之处,就是刘汝佳书上的八皇后问题,然后就是计算皇后所占的方格内的数值和,取最大的即可
#include <cstdio>
#include <cmath>
#include <cstring>
int n,m,count;
int visit[3][20],score[8][8];
void dfs(int cur,int sum)
{
if(cur>=8)
{
if(sum>count) count=sum;
return;
}
for(int i=0; i<8; i++)
if(!visit[0][i]&&!visit[1][cur+i]&&!visit[2][cur-i+n])
{
visit[0][i]=visit[1][cur+i]=visit[2][cur-i+n]=1;
dfs(cur+1,sum+score[cur][i]);
visit[0][i]=visit[1][cur+i]=visit[2][cur-i+n]=0;
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("a.txt","r",stdin);
#endif
scanf("%d",&n);
while(n--)
{
for(int i=0; i<8; i++)
for(int j=0; j<8; j++)
scanf("%d",&score[i][j]);
memset(visit,0,sizeof(visit));
count=0;
dfs(0,0);
printf("%5d\n",count);
}
return 0;
}
167 - The Sultan's Successors
最新推荐文章于 2018-04-17 12:53:09 发布