不论你是擅长哪种语言的程序员或者是思维逻辑爱好者,遇到这个问题,首先要理解题干。
在国际象棋里面,皇后可以上下左右斜线吃棋,在8x8的棋盘上放八个皇后,不相互干扰,下面说下解决思路:
1.传统解决办法:首先会正面思考。
先在第一行第一个格子放皇后,然后在第二行第三个格子放皇后,以此类推,遇到不满足的情况返回到上一个皇后,重新放皇后的位置。------------当然这种方法没有错,就是繁琐,编程思路就是:先放一个二维数组来表示棋盘,然后定义一个变量表示皇后,满足条件是整数增加或者用换行表示,再定义一个字符串变量表示棋盘的落棋点,保证皇后和落棋点不冲突。
2.第二种解决办法:比较每个皇后落棋点的是否有冲突即可。
也就是说每一个皇后在棋盘上落棋点只能落在每一行或每一列的八个点之一,然后去掉相邻摆放位置的机会,去掉斜线(45°和135°)的位置,这样就节省很多计算时间。-------直接用数组(三个元素或者八个元素)比对解决,比一个一个位置比较快很多。
3.第三种解决办法:因为我们已经知道棋盘的大小和位置,那我们可以采取坐标系的解决办法,条件判断还是一样,坐标用二维数组表示,但是存在四个象限,我们可以用45°,135°,225°,315°定义斜线,正负数代表行和列。
这种方法大家以后会遇到,当然定义变量会有点复杂,但是使用范围广。
4.第四种解决办法:逆向思维,我们定义每个皇后落棋点,然后根据落棋点筛选可以相互***的摆放点,然后用总摆放个数减去就行,这个和第一个方法类似。
它的适用范围存在于正面不好解决的时候,有存在的价值。
5.个人总结:一个好的程序员,他写出来的代码必须满足可读性和实用性结合,程序的优化是每个程序员都必须掌握的,你把它当做艺术,那创作的源泉就会源源不断的从你的脑海里涌现出来,当然,你的收入也会有一个提高。

转载于:https://blog.51cto.com/tudoubowen10/2089267

国际象棋八皇后问题----解决办法相关推荐

  1. Java实现递归回溯,解决八皇后问题,数据结构与算法

    文章目录 八皇后问题 解决思路 代码实现 运行结果 八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆 ...

  2. 算法入门经典-第七章 例题7-2 八皇后问题

    原本利用回溯思想解决的经典八皇后问题,其实也是可以用递归解决的~ 八皇后的递归解决思路: 从第一行开始,依次判断0~8列的哪一列可以放置Queen,这样就确定了该行的Queen的位置,然后行数递增,继 ...

  3. 七十八、 回溯法解决八皇后问题

    @Author:Runsen 八皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后. 来自百度百科,皇后的走法是可 ...

  4. 回溯法在解决八皇后问题中的应用

    回溯法:有这样一类题目,它们要求在相对问题的输入规模按照指数速度增长(或者更快)的域中,找出一个具有指定特性的元素.例如:在图顶点的所有排列中求一个哈密顿回路,在背包问题的一个实例中求其中最有价值的物 ...

  5. 使用二维数组和函数解决八皇后问题(c++)

    八皇后问题 问题 思路 代码 解释 问题 八皇后问题 八皇后问题(英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例. 问题表述为:在8×8 ...

  6. 有趣的数据结构算法12——利用递归解决八皇后问题

    有趣的数据结构算法12--利用递归解决八皇后问题 题目复述 解题思路 实现代码 GITHUB下载连接 本次教程主要讲述如何利用递归解决八皇后问题,它和汉诺塔一样让人很难过. 题目复述 据说西洋棋手都具 ...

  7. 八皇后问题理解与解决

    一. 问题描述 八皇后问题,即在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法.高斯认为有76种方案.1854年在柏林的象棋杂志 ...

  8. 遗传算法解决八皇后问题

    遗传算法解决八皇后问题 程序设计的概要思想 编码方案 适应度的计算 初始种群 选择算子 交叉算子 变异算子 终止策略 程序的主要函数及其作用 运行结果截图 Python源代码 程序设计的概要思想 遗传 ...

  9. 遗传算法解决八皇后问题(java源码)

    本文源码下载链接:https://download.csdn.net/download/goulvjiang3176/11221063 另有贪心算法解决八皇后问题的源码下载链接:https://dow ...

  10. 回溯算法解决八皇后问题(JAVA实现)

    送给程序猿们一句话 <拥有水滴石穿的坚持:懂得聚沙成塔的积累:磨练坚韧不拔的意志:学习脚踏实地的奋斗:提升立世做人的技巧:突破自我设限的障碍.> 文章目录 背景 问题解决 思路 什么是回溯 ...

最新文章

  1. Python之字符串格式化(format)
  2. 分享Kali Linux 2016.2第36周镜像虚拟机
  3. MySQL第7天:MySQL的架构介绍之存储引擎
  4. Python中使用多重继承
  5. .Net异步编程知多少
  6. 【远程操控】Pycharm远程连接服务器之本地显示独立的plot窗口
  7. boost::contract模块实现命名覆盖的测试程序
  8. 【Heritrix基础教程之3】Heritrix的基本架构
  9. 讨论一个比较有意思的业务需求
  10. Java 算法 一元多项式求导
  11. Linq-插入insert
  12. 【文智背后的奥秘】系列篇——分布式爬虫之WebKit
  13. 卸载MySql详细步骤
  14. How to convert any valid date string to a DateTime.
  15. windows下批量更改文件后缀
  16. python 课程设计扫雷报告_《扫雷课程设计报告.doc
  17. debian linux 7 安装,Debian 7.0.0安装图解教程
  18. Android 通过shape画线,1条线2种颜色,左边线条和背景色一致,右边线条为divider颜色
  19. OpenMP学习笔记之常用指令parallel/sections/critical 其余待续
  20. java 实现office转换pdf

热门文章

  1. react 父子 --- 子父 通讯
  2. scrapy运行报错: Overridden settings XXX
  3. 汇总报表与合并报表之如何汇总报表
  4. 没有oracle 连接kettle,Kettle 连接 oracle
  5. 微信小程序验证码倒计时60秒
  6. 2021年工作报告词频词云分析
  7. Scrapy实战之阳光热线问政平台
  8. 第4章 程序的控制结构(单元测试题Python含答案)
  9. 【英语语法入门】 第11讲 名词
  10. token验证失败 java_“Token校验失败,请检查确认”解决方法