Question
根据国际象棋的规则,皇后可以攻击与同处一行、一列或一条斜线上的棋子。给定 n 个皇后和一个 n×n 大小的棋盘,寻找使得所有皇后之间无法相互攻击的摆放方案。
如图 13-15 所示,当 n=4 时,共可以找到两个解。从回溯算法的角度看,n×n 大小的棋盘共有 n2 个格子,给出了所有的选择 choices
。在逐个放置皇后的过程中,棋盘状态在不断地变化,每个时刻的棋盘就是状态 state
。

图 13-15 4 皇后问题的解
图 13-16 展示了本题的三个约束条件:多个皇后不能在同一行、同一列、同一条对角线上。值得注意的是,对角线分为主对角线 \
和次对角线 /
两种。