我运行的实现在:http://www.apl.jhu.edu/~hall/java/NQueens.java,它解决了N皇后问题的O(n)时间复杂度。它的速度惊人的快,帮助找出一个解决方案,而无需搜索然而,我不太清楚背后的逻辑。
为什么他们把问题分成3个部分:奇数,偶数(但不是6k表),偶数(但不是6k+2表)。
有人能帮我检查一下代码并详细解释一下吗(仅限逻辑)?
最佳答案
他们把问题分开了,因为这两项工程都不包括所有的情况。如果你试图证明它们在坏的情况下工作,你会发现某个数不是模n,这是构造约束组合对象时的一个典型状态例如,存在6AK+1和6K+ 3的unit,但两个残基MOD 6需要不同的结构。