问题描述
- 编程模拟输出在国际象棋棋盘上放置八个皇后,其中任何一个皇后所处的行、列及对角线上不能有其他的
-
编程模拟输出在国际象棋棋盘上放置八个皇后,其中任何一个皇后所处的行、列及对角线上不能有其他的
解决方案
http://blog.csdn.net/evankaka/article/details/48756951
这是我之前研究的
解决方案二:
这种算法很多
http://www.cnblogs.com/zhang-xiao/archive/2013/03/24/2978616.html
http://blog.csdn.net/njnu_mjn/article/details/5449098
解决方案三:
我见到的最好的对八皇后问题的讲解来源于严蔚敏版的数据结构。思想大致如下。我们在棋盘上放皇后的过程,其实就是一个构造状态树的过程,首先我们第一行放一个元素,这时的棋盘就是状态树的根节点,因为是第一个元素,所以没有任何限制因素,我们可以把元素放在第一行的任何位置,接下来放第二行,因为之前放过元素,第二行的元素的元素只能放在特定的位置上,那些能放元素的地方放上元素后,这个包含两个元素的棋盘就成了包含一个元素棋盘的子节点,而那些不能放置元素的位置就从状态树种剪掉了,以此类推,那些包含了八个元素的子节点,就是成功八方八个皇后的棋盘。编程上是很好实现的,用一个递归就好了。因为会剪枝,所以不用遍历所有可能。效率不错。我用这种方式实现的代码,可以通过leetcode hard级别的题目
时间: 2024-10-31 00:11:13