http://jeffe.cs.illinois.edu/teaching/algorithms/notes/03-backtracking.pdf
解释高亮显示的图片
Q [i] = j Q [i] = j + r-i Q [i] = j-r + i
这些语句如何检查行列或对角线中的两个女王攻击?
答案 0 :(得分:0)
这是一个比我多年前提出的更好的解决方案,当时我将这个明显的算法击败了一个数量级。
从根本上说,这样做不是维护一块板子,而是检查女王可以移动的三条路径(你只需要看看女王后面 - 它是该行中唯一的女王,所以你知道那个方向很明显是一个尚未被放置的皇后 - 这需要检查(行-1)* 3个单元格(虽然有些是不在线的,但首先测试对角线的边界可能更便宜)&# 39;维持一个一个维度的皇后阵列并注意他们所威胁的内容。这将每个放置测试减少到3个方格。 (并且仅使用加法,没有乘法。现在不相关,当我玩这个时节省了相当多的时间。)
我没有看过整个事情,看看他们是如何使用一个阵列而不是我用它做的三个(列威胁,/对角威胁,\对角威胁。后者阵列是两倍于大。)