参考博客:http://www.cnblogs.com/gaoteng/archive/2012/04/11/2442692.html

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T374

问题描述
规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大。
输入格式
一个8*8的棋盘。
输出格式
所能得到的最大数字和
样例输入
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
48 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
样例输出
260
数据规模和约定
棋盘上的数字范围0~99
思考:解答本题首先得了解什么是8皇后(为此我百度了一下)。
8皇后:八皇后问题是一个以国际象棋为背景的问题,如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。
所以首先要做的就是先解决8皇后问题,即是8个皇后共有多少种不同的放法,解决此问题后,再在定义一个8*8的数组,将数据存起来然后比大小即可。
然后思考如何处理8皇后问题:第一行有8种放法,而每一种放法下一行又对应了8种放法(当然这里先不考虑此问题的规则)……
那么层层放下去就会得到一个满8叉树,那么此问题就可以用树形的思想去解决,用深度优先递归算法来对每一层进行遍历(这时候按照规则排除不满足的情况)。
那么接下来思考如何找出不满足的情况: 问题要求8个皇后不能同时位于同列、同行、同斜线。这里我定义x数组,下标i表示行,值x[i] 表示在皇后放在 i 行所在的那一列,那么只要每一个皇后所处的 i 和 x[i],不同即可满足不同行、不同列。至于同斜线,观察可知位于同一斜线的两个位置如i 行 j行 满足等式abs(i-j) == abs(x[i] - x[j] )。故次8皇后的 问题可以解决了。
然后在每一个位置上放一个数比较相加即可,但是需要注意的一点是在每一下一次递归结束后应该把递归之前加的那个数减去然后在进行下一次递归。
代码:

#include<cstdio>
#include<iostream>
#include<cmath>
#define M 8+1using namespace std;
int x[M];   //下标表示皇后所在的行,x[i]表示皇后所在的列
int sum,maxNum;
int ar[9][9];   //代表每个点的数值 int max(int n1, int n2){if(n1>n2) return n1;return n2;
}bool isPlace(int k){//不能是同行或者同列 或者同对角线 for(int i=1; i<k; ++i){if(abs(i-k) == abs(x[k]-x[i]) || abs( x[i] == x[k] ) )return false;}return true;
}
void onTrace(int t){if(t>8){maxNum = max(maxNum, sum);}else{for(int i=1; i<=8; ++i){ //colx[t]=i;if(isPlace(t)){sum+=ar[t][i];onTrace(t+1);//递归完之后就会进行下一列递归,所以应该把前一列的那个数去掉 sum-=ar[t][i];    //important!!    here,   error more than once}}}} int main()
{for(int i=1; i<=8; ++i){for(int j=1; j<= 8; ++j){scanf("%d", &ar[i][j]);}}maxNum=-1;onTrace(1);   //printf("%d\n", maxNum);return 0;
}

【蓝桥杯】8皇后·改相关推荐

  1. 蓝桥杯Python-2n皇后问题(和别人的想法有点不一样)

    首先附上问题链接:蓝桥杯基础练习VIP-2n皇后问题 - C语言网 (dotcpp.com) 问题描述: 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使 ...

  2. 蓝桥杯 2n皇后(java递归回溯)

    一.2n皇后问题 问题描述: 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在 ...

  3. 蓝桥杯 八皇后 2n皇后问题

    八皇后问题 正式讲解2n皇后问题之前,首先聊聊八皇后问题 题目很简单,8*8棋盘上放上八个皇后,不能放在同一行.列,或者是同对角线. 我在做这题的时候,首先没有参考别人的思路.第一反应是DFS来解决, ...

  4. 蓝桥杯2N皇后问题-使用Python实现

    题目描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后 和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两 个白皇后都不在同一行.同一列或 ...

  5. 蓝桥杯 基础练习 2n皇后

    目   录 题目描述 题解 [算法]八皇后,蓝桥杯2n皇后 算法思路详细讲解(Java) 题目描述 题目描述 给定一个 n × n 的棋盘,棋盘中有一些位置不能放皇后. 现在要向棋盘中放入 n 个黑皇 ...

  6. 蓝桥杯基础练习所有VIP习题解析代码

    阶乘计算 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 输入一个正整数n,输出n!的值. 其中n!=123*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用 ...

  7. c语言 java 性能 测试_这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第...

    这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第一个是对的啊提交序号1269960作者彭云成提交时间02-0507:49:27评测结果运行错误得分.. ...

  8. 蓝桥杯基础练习 - 2n皇后问题解析

    问题描述         给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一 ...

  9. 3位水仙花数计算pythonoj_Python解答蓝桥杯省赛真题之从入门到真题

    若发现此文章消失,则是在等待审核中,稍等一会儿即可显示,谢谢. 另外,我会尽量晚上上传更新题目. 此文章太长了,导致MD编辑器很卡,另写了一篇接续 传送门 Python解答蓝桥杯省赛真题之从入门到真题 ...

  10. 2021.5.22 2022蓝桥杯练习赛3

    2021.5.22 2022蓝桥杯练习赛3 闲话: 1.就难度而言,本次练习赛题目整体比较简单,要是认真补了前两场的题,应该可以轻松做完4到5题. 2.就体验而言,这场练习赛数据普遍较弱,基本上瞎搞都 ...

最新文章

  1. 红帽虚拟化RHEV-PXE批量安装RHEV-H
  2. js 字符串插入_前端利器React,为什么推荐JSX来替换JS
  3. java共享锁排它锁_java 实现共享锁和排它锁
  4. NSFileManager文件操作的十个小功能
  5. 开课吧Java课堂:什么是抽象类?如何使用抽象类?
  6. 【数学建模】day05-微分方程建模
  7. 编程之美第一篇 01分数规划
  8. Struts2详细执行流程自己总结
  9. stm32使用各种传感器的教程
  10. python 基础代谢率计算_基于python实现计算且附带进度条代码实例
  11. 写在十九岁生日的23:31。
  12. 【系统分析师之路】第七章 系统分析架构篇记忆敲出
  13. 维特比算法在隐马尔可夫模型中的应用
  14. android代码控制组件的移动,Android自定义控件实现随手指移动的小球
  15. sshpass报错Host key verification failed
  16. 【测试算法】深入浅出Pairwise 算法
  17. [思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具
  18. 协同OA助中国制造业制造实时企业
  19. 很显然,现在元宇宙、web3.0的关注度,早已超过了区块链
  20. C和C++算法完整教程专栏完整目录

热门文章

  1. 你真的做好数字化运营了吗?来直播间,给你加点儿“灵感”丨教育专题
  2. 新康众闫顺成:数据中台建设中的得与失
  3. PPT 下载 | 神策数据孙超赟:多场景解读运营的价值、生存状态与解决方案
  4. CEO 赠书 | 打破创新神话,揭示创新本质
  5. (五)开源IT资产管理系统--分发OCS客户端
  6. SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
  7. poj 3537 Crosses and Crosses 博弈论之grundy值
  8. php pdo预处理语句与存储过程
  9. mahout基于Hadoop的CF代码分析(转)
  10. 加密解密、Openssl、自建CA