UVa 167 - The Sultan's Successors

来源:互联网 发布:世界上的光 海明威知乎 编辑:程序博客网 时间:2024/06/08 07:18

题目链接:UVa 167 - The Sultan's Successors

回溯。

八皇后变形,每个棋格子多了权值,要求找到最大权值。

#include <iostream>#include <iomanip>#include <cstring>using namespace std;int k;int value[10][10];int _max;int vis[3][20];void dfs(int cnt,int sum){    if(cnt == 8)        _max = max(_max,sum);    else    {        for(int i = 0;i < 8;i++)//行        {            if(!vis[0][i] && !vis[1][cnt + i] && !vis[2][cnt - i + 8])            {                vis[0][i] = vis[1][cnt + i] = vis[2][cnt - i + 8] = 1;                dfs(cnt + 1,sum + value[cnt][i]);                vis[0][i] = vis[1][cnt + i] = vis[2][cnt - i + 8] = 0;            }        }    }}int main(){    cin >> k;    while(k--)    {        memset(vis,0,sizeof(vis));        _max = 0;        for(int i = 0;i < 8;i++)            for(int j = 0;j < 8;j++)                cin >> value[i][j];        dfs(0,0);        cout << setw(5) << _max << endl;    }    return 0;}


0 0