uva 167 - The Sultan's Successors

来源:互联网 发布:java防止js注入 编辑:程序博客网 时间:2024/06/15 17:29

八皇后计数,求最大。

#include<iostream>#include<cmath>#include<cstdio>#include <cstring>using std::cin;using std::cout;using std::endl;int board[10][10], vis[3][20], c[10], n, tot;void dfs(int cur){    if(cur == 8)    {        int sum = 0;        for(int i = 0; i < 8; i++)            sum += board[i][c[i]];        if(sum > tot)            tot = sum;        return;    }    for(int i = 0; i < 8; i++)    {        if(!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+8])        {            c[cur] = i;            vis[0][i] = vis[1][cur+i] = vis[2][cur-i+8] = 1;            dfs(cur + 1);            vis[0][i] = vis[1][cur+i] = vis[2][cur-i+8] = 0;        }    }}int main(){    cin >> n;    while(n--)    {        for(int i = 0; i < 8; i++)            for(int j = 0; j < 8; j++)                cin >> board[i][j];        memset(vis, 0, sizeof(vis));        tot = 0;        dfs(0);        printf("%5d\n", tot);    }    return 0;}