求八皇后问题的92个解并在棋盘上显示它们
来源:互联网 发布:室内设计师 知乎 编辑:程序博客网 时间:2024/05/05 13:46
问题描述
八皇后问题是算法教程里面的标准例子。在
转帖代码
dark=RGBColor[0.8196,0.5451,0.2784];light=RGBColor[1,0.8078,0.6196];queen=Import["http://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Chess_qlt45.svg/200px-Chess_qlt45.svg.png"]range=Partition[Range[64],8];range=MapAt[Boole[EvenQ[#]]&,range,1;;8;;2];range=MapAt[Boole[OddQ[#]]&,range,2;;8;;2];takenByQueen[{i_,j_}]:=Module[{boardElements},boardElements=Array[List,{8,8}];Union[boardElements[[i]],boardElements[[All,j]],Diagonal[boardElements,j-i],Diagonal[Reverse[board,2],(Length[board]-j+1)-i]]]bt[board_,row_,occupied_]:=Module[{available},available=Complement[Thread[{row,Range[8]}],occupied];If[row<9,bt[ReplacePart[board,#->1],row+1,Union[occupied,takenByQueen[#]]]&/@available,Sow[board/.{_,_}->0]];]board=Array[List,{8,8}];solutions=Reap[bt[board,1,{}]][[2,1]];drawBoard[board_]:=ArrayPlot[range,ColorRules->{0->light,1->dark},Epilog->(Inset[queen,#-1,#-1,1]&/@Position[board,1])]ListAnimate[drawBoard/@solutions]
输出结果:
深入参考
- CSDN博客文章:
- 高德纳的arXiv文章:
- 高教授的 代码1, 和 代码2 :
- 各种编程语言下求解该问题的代码
0 0
- 求八皇后问题的92个解并在棋盘上显示它们
- 1.八皇后问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后
- 设计一种算法,打印八皇后在8*8棋盘上的各种摆法
- Python中的生成器在八皇后问题上的应用
- Java迭代法求所有八皇后问题的解
- C++递归问题之二——n皇后问题:以四、八皇后为例,给定n个皇后要求将它们放在一个n维矩阵中,任意两个皇后不能出现在同一行、列、主副对角线上,输出具体的摆放方式
- 基于八皇后上的N皇后问题
- M*N棋盘上的K皇后问题
- n×n棋盘上n皇后问题
- 八皇后的问题
- 八皇后的问题
- 八皇后的问题
- poj1321--棋盘问题(搜索练习2,变形的八皇后问题)
- 解八皇后问题
- 回溯法的典型问题 八皇后 马踏棋盘 迷宫
- MOOC清华《程序设计基础》第5章第2题:破损棋盘的八皇后问题
- 八皇后问题 的92种结果
- 皇后问题最快的解法(C语言)八皇后、十六皇后时间在毫秒级
- 树形DP入门总结
- 绑定远程服务的流程aidl
- JVM 进阶五
- HDU 2828 Lamp
- Quartz.NET 入门(干货多多)
- 求八皇后问题的92个解并在棋盘上显示它们
- 用Linux做路由器(以VirtualBox为例):
- Sql日期时间格式转换
- 程序在flash中还是ram中运行
- iOS 创建静态库static library
- java基础第一讲——JDK、注释、帮助文档、编码规范
- C++读取Excel的XLS文件的方法
- zoj3023 Equal Total Scores
- linux下部署多台tomcat