n 皇后问题 研究的是如何将 n
个皇后放置在 n × n
的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n
,返回 n 皇后问题 不同的解决方案的数量。
class Solution:def totalNQueens(self, n: int) -> int:ans = 0col = [False] * ndiag1 = [False] * (n * 2 - 1)diag2 = [False] * (n * 2 - 1)def dfs(r: int) -> None:if r == n:nonlocal ansans += 1 # 找到一个合法方案returnfor c, ok in enumerate(col):if not ok and not diag1[r + c] and not diag2[r - c]:col[c] = diag1[r + c] = diag2[r - c] = Truedfs(r + 1)col[c] = diag1[r + c] = diag2[r - c] = False # 恢复现场 dfs(0)return ans