52. N-Queens II(N皇后问题 II)
题目大意
The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other.
Given an integer n
, return the number of distinct solutions to the n-queens puzzle.
中文释义
N皇后问题是在一个 n x n 的棋盘上放置 n 个皇后,使得它们互不攻击的问题。
给定一个整数 n
,返回 N皇后问题的不同解法数量。
示例
-
示例 1:
- 输入:
n = 4
- 输出:
2
- 解释:如图所示,有两种不同的解决方案。
- 输入:
-
示例 2:
- 输入:
n = 1
- 输出:
1
- 输入:
限制条件
1 <= n <= 9
解题思路
使用回溯法来解决问题。通过维护三个数组来检查列和对角线上是否已经有皇后,从而避免冲突。
步骤说明
- 从第一行开始,尝试在每一列放置皇后。
- 对于每一列,检查当前列、两个对角线是否已经有皇后。
- 如果没有冲突,将皇后放在当前位置,并递归地检查下一行。
- 如果到达最后一行,增加解法计数。
- 回溯:移除当前位置的皇后,检查当前行的下一列。
代码
class Solution {
public:
int totalNQueens(int