首页 > 其他 > 详细

uva167-苏丹的继承者

时间:2016-08-12 21:22:27      阅读:127      评论:0      收藏:0      [点我收藏+]

翻译请戳 http://luckycat.kshs.kh.edu.tw/

 

解题思路

就是8皇后加上最小值。

还是回溯。

 

代码

#include<stdio.h>
#include<string.h>
const int maxLen = 20;
int val[maxLen][maxLen];
bool visit[2][maxLen];
int maxval;
void Search(int cur, int sum)
{
    if(cur==8 && sum>maxval) { maxval = sum; return ; }
    for(int i=0; i<8; i++) {
        if(!visit[0][i] && !visit[1][cur+i] && !visit[2][cur-i+8]) {
            int mid = sum;
            mid += val[cur][i];
            visit[0][i] = visit[1][cur+i] = visit[2][cur-i+8] = true;
            Search(cur+1, mid);
            visit[0][i] = visit[1][cur+i] = visit[2][cur-i+8] = false;
        }
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    while(n--) {
        for(int i=0; i<8; i++)
            for(int j=0; j<8; j++) {
                scanf("%d", &val[i][j]);
            }
        Search(0, 0);
        printf("%5d\n", maxval);
        maxval = 0;
        memset(visit, 0, sizeof(visit));
    }
    return 0;
}

 

uva167-苏丹的继承者

原文:http://www.cnblogs.com/ZengWangli/p/5766224.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!