码迷,mamicode.com
首页 > 其他好文 > 详细

uva167-苏丹的继承者

时间:2016-08-12 21:24:34      阅读:164      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!