八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。
原来用c++实现过,现在用Python实现,换汤不换药。利用深搜。Python的实现要遵循严格缩进。
代码如下:


def printf():global a,cntprint("Num^_^",cnt)for i in range(1,9):for j in range(1,9):if(a[i][j]==1):print("x",end=' ')else:print(".",end=' ')print();cnt+=1def judge(num):global csfor i in range(1,num):if((cs[i]==cs[num]) or (abs(cs[i]-cs[num])==num-i)):return Falsereturn True
def dfs(num):global cs,a,cnt;if(num==9):printf();else :for i in range(1,9):cs[num]=i;if(judge(num)):a[num][i]=1;dfs(num+1);a[num][i]=0;global cs,a,cnt
cnt=1
cs=[0]*10
a=[[0 for col in range(10)]for row in range(10)]
dfs(1)

努力加油a啊,(o)/~

Python实现八皇后问题所有实现方式相关推荐

  1. Python解决八皇后问题

    Python解决八皇后问题 参考文章: (1)Python解决八皇后问题 (2)https://www.cnblogs.com/littleseven/p/5362791.html 备忘一下.

  2. 关于python的八皇后问题递归算法详解

    这里是对于周一课上的老师教学的python八皇后问题的个人学习记录 八皇后问题出自国际象棋:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不 ...

  3. python遗传算法八皇后_遗传算法之:八皇后问题

    八皇后问题: 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法.正确的解有很多个,遗传算法并不直接计算一共有多少个解,而是寻找满 ...

  4. python实现八皇后问题(百练OJ:2754:八皇后)

    题目链接:八皇后 描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题.  对于 ...

  5. Python实现八皇后问题

      八皇后问题是指8*8位的棋盘上,摆8个皇后,使得任意一个皇后不在其他皇后的同一横线上,同一竖线上,同一斜线(包括右上到左下斜线和左上到右下斜线)上.这个问题是一个经典的递归问题. #八皇后问题主函 ...

  6. python中八皇后如何运算的_python解决八皇后算法

    展开全部 global col #定义一些全局变量 global row global pos_diag global nag_diag global count def output(): ''' ...

  7. 八皇后问题python实现

    八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上.八皇后 ...

  8. 苏丹的继承者(八皇后问题)之python解

            八皇后问题 早在1848年就已提出,可谓是历史悠久,经久不衰,曾一度难倒了高斯之流的顶级数学大师,但是,在计算机发明之后,这道曾经的世界难题被以无数种方式轻松解决,这也不由得令我们广大 ...

  9. 带你轻而易举的学习python——八皇后问题

    首先我们来看一下这个著名的八皇后问题 八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 在这个问题提出之后人们又将 ...

最新文章

  1. 2020上的NLP有哪些研究风向?
  2. Linux进程在后台运行的几种方法
  3. linux基础--Bash逻辑控制语句
  4. nssl1186-字串数量【前缀和】
  5. 在实际使用中 mysql所支持的触发器有_2016计算机二级MySQL冲刺题及答案
  6. LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)
  7. 全栈深度学习第1期:如何启动一个机器学习项目?
  8. 阿里云正式推出内容平台“云栖号”:全面助力企业和个人上云决策
  9. 对数组下面的数组截取_numpy数组不同索引方式的区别
  10. 修改mysql端口以及出现的问题
  11. LexYacc 编译原理课设
  12. MQTT.fx工具测试mqtt
  13. Linux系统数据文件和信息
  14. 130个实用网站集合
  15. 全球与中国太阳能并网逆变器市场深度研究分析报告
  16. php web音视频通话,实现音视频通话(Web)
  17. 如何同步微信信息php,微信小程序中实现同步请求的方法
  18. 简单的视频剪辑入门制作软件,适合新手哦,快快收藏
  19. 如果时光可以倒流,会不会有不一样的故事
  20. [算法]声音数据处理

热门文章

  1. IOS开发基础之UI的喜马拉雅的项目-10
  2. java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础
  3. java和javaweb的区别_javaee, javaweb和javase的区别以及各自的知识体系
  4. java io读取文件夹_JavaIO利用迭代读取文件夹所有目录及文件
  5. 手机outlook刷新不出邮件_网页端Outlook推Spaces功能:轻松整合邮件、会议和文档...
  6. java8 例外网站_Java8兰巴达斯和例外
  7. windows 10下的kiosk模式
  8. Android开发之设置DialogFragment的窗体背景色的方法亲测可用
  9. java thread setname_Java Thread setName()方法
  10. SVN使用和解决方案