题目链接
英文链接:https://leetcode.com/problems/n-queens/
中文链接:https://leetcode-cn.com/problems/n-queens/
题目详述
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
上图为 8 皇后问题的一种解法。
给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。
每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q'
和 '.'
分别代表了皇后和空位。
示例:
1 | 输入: 4 |
题目详解
DFS,回溯。本题与 LeetCode37-解数独 类似,只不过摆放规则不一样,解题思路是一致的。
检查是否合法。
改变当前状态。
- 进入下一层。
- 退出下一层后进行恢复。
- 成功的条件是整个棋盘被正确设置,也就是沿着一行一行移动后跃出棋盘。
1 | public class LeetCode_00051 { |
- 可以换一种方法检查是否合法。
- 观察发现,对角线 1 横纵坐标相加为定值,对角线 2 横纵坐标相减为定值,那么对应的值可以代表那条对角线。
1 | public class LeetCode_00051 { |