您的位置:首页 > 其它

UVA 167 The Sultan's Successors

2016-07-27 21:28 441 查看

UVA-167

题意:八皇后问题升级版,在有值的8×8矩阵上放置八皇后,求最大值。

解题思路:八皇后问题,多一个记录总和sum,取最大值。

/*************************************************************************
> File Name: UVA-167.cpp
> Author: Narsh
>
> Created Time: 2016年07月27日 星期三 19时00分21秒
************************************************************************/

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int map[10][10],ans,n;
bool l[10],zx[50],rx[50];
void dfs(int cur,int sum) {
if (cur > 8) {
if (sum > ans) ans = sum;
return ;
}
for (int i = 1; i <= 8; i++)
if (l[i] && rx[i+cur] && zx[20+cur-i]) {
l[i]=false;
rx[cur+i]=false;
zx[20+cur-i]=false;
dfs(cur+1,sum+map[cur][i]);
l[i]=true;
rx[cur+i]=true;
zx[20+cur-i]=true;
}
}
int main() {
scanf("%d",&n);
while (n--) {
ans=0;
memset(l,true,sizeof(l));
memset(zx,true,sizeof(zx));
memset(rx,true,sizeof(rx));
for (int i = 1; i <= 8; i++)
for (int j = 1; j <= 8; j++)
scanf("%d",&map[i][j]);
dfs(1,0);
printf("%5d\n",ans);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: