N皇后(算法)通过数组不理解几行

Posted

技术标签:

【中文标题】N皇后(算法)通过数组不理解几行【英文标题】:N queen (algorithm) via array not understanding few lines 【发布时间】:2017-12-06 23:19:03 【问题描述】:

http://jeffe.cs.illinois.edu/teaching/algorithms/notes/03-backtracking.pdf

enter image description here

解释突出显示的图像文本

Q[i]=j Q[i]=j+r-i Q[i]=j-r+i

这些语句如何检查两个皇后是否攻击行列或对角线?

【问题讨论】:

要解释什么?它正在检查: Q 数组中索引 i 处的元素是否等于 j 中保存的值,或者它是否等于 j + r - 1 或 j - r + i,如果其中任何一个为真,布尔变量 legal 设置为假并且下面的代码没有被执行,因为legal是假的。 【参考方案1】:

这比我多年前提出的解决方案要好,当时我将显而易见的算法击败了一个数量级。

从根本上说,这样做的目的不是维护棋盘并检查皇后可以移动的三个路径(您只需要查看皇后的背后——它是该行中唯一的皇后,因此您知道方向很明确还没有放置前面的皇后)需要检查(行 - 1)* 3 个单元格(虽然有些不在板上,但首先测试对角线的边界可能更便宜)它保持 one 皇后的维度数组,并注意它们的威胁。这将每个分班测试减少到 3 个方格。 (并且只使用加法,没有乘法。现在无关紧要,当我玩这个时节省了相当多的时间。)

我还没有查看整个事情,以了解他们如何使用一个阵列而不是我使用的三个阵列(列威胁,/对角威胁,\对角威胁。后者阵列大两倍。 )

【讨论】:

以上是关于N皇后(算法)通过数组不理解几行的主要内容,如果未能解决你的问题,请参考以下文章

N皇后问题—初级回溯

回溯算法

算法学习——DFS(暴力搜索)N皇后问题

用回溯法解定和子集问题、0/1背包问题和n皇后问题的算法比较

n皇后问题与2n皇后问题

noj算法 8皇后打印 回溯法