回溯——n皇后问题
来源:互联网 发布:美工设计要求 编辑:程序博客网 时间:2024/06/16 05:00
思想:
用回溯方法求解,首先要分析问题的求解空间。可用一棵n叉树表示这个问题的求解空间,在回溯遍历这个课二叉树的过程中形成合理的解。
对于这棵n叉树,列序号i(0~n-1)是它的孩子,而每个孩子都有深度为n的子树(包括自身),这些子树的层次是n个皇后(也代表每个皇后的行序号,因为不同的皇后肯定不在同一行)。于是,遍历这个n叉树的每个孩子结点到叶子节点便得到一个合理解。遍历时,先从第一个孩子(第一行)开始遍历,深度遍历这个孩子子树,直到找到(1)一个合理解或者(2)剪去不存在合理解的分枝。对于(1)表明已经遍历到了叶子节点,亦即所有的皇后都找到了一个合理的位置,对于(2)表明在某个层次的皇后节点不能找到一个合理位置,于是停止深度遍历,将此分枝剪去。不管对于哪种情况,此时要向上层回溯,继续探索合理的解。直到整个n叉树都遍历完。
比如对于4个皇后的情况,首先让第一个皇后占据x[0][0](第一行第一列),然后让第二个皇后在第二行寻找合适的位置x[1][2](第二行,第3列),第三个皇后在第三行寻找合适的位置,此时第三个皇后已经不能找到合适位置,于是将此分枝剪去。回溯到第二个皇后(第二行),探索新的位置,此时对于第二个皇后已经不能找到合理位置。回溯到第一个皇后(第一行),探索新的位置。此时,让第一个皇后占据第一行第二列x[0][1],依次回溯,直到第一个皇后的所有列都试探完毕,也就遍历完了n叉树。
下面给出递归和非递归的实现:
- 回溯——n皇后问题
- 回溯——n皇后问题 收藏
- n皇后问题——回溯算法
- N皇后问题——回溯算法
- 回溯——n皇后问题
- 回溯法经典—n-皇后问题
- 回溯算法—n皇后问题
- 回溯算法—n皇后问题
- 回溯算法—N皇后问题
- 回溯法—八皇后问题(N皇后)
- 回溯——N皇后
- 回溯:N皇后问题
- 回溯法———n皇后问题
- 回溯法求解 “n 皇后 问题”——Java 实现
- 006回溯法——n皇后问题
- 回溯法——求解N皇后问题
- 回溯法——八皇后问题 n-queens
- 【算法笔记】回溯法——n皇后问题
- 安装压缩工具与配置多媒体环境
- 龙芯创新在哪里?意义又在哪里?
- Apache Server 负载能力测试
- 安装mediawiki
- 一个简单的系统配置文件使用DTD和XSD两种方式描述
- 回溯——n皇后问题
- 3D中的OBJ文件格式详解
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十四) 精灵控件横空出世!①
- 凹凸映射(Bump Map)实现原理
- HTTP状态查询表
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十五) 精灵控件横空出世!②
- 使用dom4j操作XML文档
- WPF
- 蓝牙(Bluetooth)系统的无线接入