N皇后(算法)通过阵列不理解几行

时间:2017-12-06 23:19:03

标签: algorithm backtracking n-queens

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

这些语句如何检查行列或对角线中的两个女王攻击?

1 个答案:

答案 0 :(得分:0)

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

从根本上说,这样做不是维护一块板子,而是检查女王可以移动的三条路径(你只需要看看女王后面 - 它是该行中唯一的女王,所以你知道那个方向很明显是一个尚未被放置的皇后 - 这需要检查(行-1)* 3个单元格(虽然有些是不在线的,但首先测试对角线的边界可能更便宜)&# 39;维持一个一个维度的皇后阵列并注意他们所威胁的内容。这将每个放置测试减少到3个方格。 (并且仅使用加法,没有乘法。现在不相关,当我玩这个时节省了相当多的时间。)

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