52. N皇后 II
难度:困难
n 皇后问题 研究的是如何将 n
个皇后放置在 n×n
的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n
,返回 n 皇后问题 不同的解决方案的数量。
示例 1:
输入:n = 4
输出:2
解释:如上图所示,4 皇后问题存在两个不同的解法。
示例 2:
输入:n = 1
输出:1
提示:
1 <= n <= 9
- 皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。
class Solution:
def totalNQueens(self, n: int) -> int:
def check(row, col):
for i in range(row):
if res[i] == col or i + res[i] == row + col or i - res[i] == row - col:
return False
return True
ans = 0
def dfs(row):
if row == n:
nonlocal ans
ans += 1
for i in range(n):
if check(row, i):
res.append(i)
dfs(row + 1)
res.pop()
res = []
dfs(0)
return ans