n 皇后问题是一道经典的回溯算法问题,其目标是在一个
�
×
�
n×n 的棋盘上放置
�
n 个皇后,使得任意两个皇后都不能在同一行、同一列或同一斜线上。
栈可以用来辅助实现回溯算法,本质上就是手动维护了递归过程中系统默认维护的函数调用栈。下面给出使用栈求解 n 皇后问题的思路:
定义一个栈,用于存储已摆放皇后的位置信息。
初始将第一个皇后放到第一行第一列,入栈。
重复以下操作,直到栈为空:
取出栈顶元素,表示当前正在处理的行。
在该行从左到右依次尝试放置皇后,并检查可不可以。
如果找到一个可行的位置,则将该位置入栈,并转到下一行(即当前行数
+
1
+1)。
如果找不到可行的位置,弹出栈顶元素重新开始循环。
当栈的长度等于
�
n 时,表示找到了一组可行解,输出解法。