vua167 - The Sultan's Successors

2023-11-20 19:49
文章标签 sultan successors vua167

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/397013

相关文章

uva 11265 - The Sultan's Problem(多边形切割)

题目链接:uva 11265 - The Sultan's Problem 对于每条切线,取点在那侧。 #include <cstdio>#include <cstring>#include <cmath>#include <vector>#include <complex>#include <algorithm>using namespace std;typede

uva-167 - The Sultan's Successors-八皇后-回溯

一道变异的八皇后问题,八皇后问题是很经典的回溯题目; 利用L,R,LL,RR数组标记点的横排,竖排,左斜,右斜有没有皇后。 从i=1,开始找,如果找到i=8以后,看一下统计的和,取其中的最大值。 #include<iostream>#include<cstdio>#include<algorithm>#include<stdlib.h>#include<string.h>usi