当前位置: 首页 > 工具软件 > sultan > 使用案例 >

uva 167 The Sultan's Successors

王才英
2023-12-01

 这是一题八皇后的题,挺经典的。

给你一个k,表示有k组测试,接下来有8x8列,找出 最大皇后位置和最大

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;

int p[9][9];
int vis[3][20];
int MAX = 0;
int n;
void dfs(int A,int m)
{
    if(A == 8)
    {
        MAX = max(MAX,m);
        return;
    }
    else{
        for(int i = 0; i<8; i++)
            if(!vis[0][i]&&!vis[1][A+i]&&!vis[2][A-i+8])
        {
            m +=p[A][i];
            vis[0][i] = vis[1][A+i] = vis[2][A-i+8] = 1;
            dfs(A+1,m);
            vis[0][i] = vis[1][A+i] = vis[2][A-i+8] = 0;
            m -=p[A][i];
        }
    }
}
int main()
{
    scanf("%d",&n);
    while(n--)
    {
     memset(vis,0,sizeof(vis));
        for(int i = 0;i <8;i++)
        {
            for(int j = 0; j < 8; j++)
                scanf("%d",&p[i][j]);
        }
        MAX = 0;
        dfs(0,0);
        printf("%5d\n",MAX);

    }
    return 0;
}

 类似资料:

相关阅读

相关文章

相关问答