本文主要是介绍vua167 - The Sultan's Successors,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
很简单的八皇后题目。
单纯递归筛选。。。。
分别用y-x, x+y,来标识对角线,这在刘汝佳书上都有讲的。
代码如下:
#include <cstdio>
int chess[8][8], lu_to_rd[14], ru_to_ld[14], l[8], max; //lu_to_rd 表示主对角线(left&up to right&down)//同理,ru_to_ld标识副对角线
void dfs(int cur, int sum)
{if(cur==8){max = max < sum ? sum : max ;return;}for(int i = 0; i < 8; i++){if(!l[i]&&!lu_to_rd[i-cur+7]&&!ru_to_ld[i+cur]){l[i] = lu_to_rd[i-cur+7] = ru_to_ld[i+cur] = 1;dfs(cur+1,sum+chess[cur][i]);l[i] = lu_to_rd[i-cur+7] = ru_to_ld[i+cur] = 0;}}
}
int main ()
{int k;scanf("%d",&k);while(k--){for(int i = 0; i < 8; i++) for(int j = 0; j < 8; j++)scanf("%d",&chess[i][j]);max = -1;dfs(0, 0);printf("%5d\n",max);}
}
这篇关于vua167 - The Sultan's Successors的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!