7.1 N皇后问题
N皇后问题
1 N皇后问题-回溯法
问题描述
在N×N的棋盘中放置N个皇后,使得任何两个皇后之间不能相互攻击,试给出所有的放置方法。
问题分析
- 问题解向量:(x1, x2, … , xn)
- 显约束:xi=1,2, … ,n
- 隐约束:
- 不同列:xi不等于xj;
- 不处于同一正、反对角线:|i-j|不等于|xi-xj|
算法时间复杂度
(1)搜索1+n+n2+…+nn=(nn+1-1)/n-1≤2nn;
(2)每个节点判断是否符合规则,最多要判断3n个位置(列方向、主与副对角线方向是否有皇后)
故最坏情况下时间复杂度O(3n×2nn)=O(nn+1)
算法实现
1 | bool Queen::Place(int k) { |
2
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!









