N-Queens II LeetCode solution in Python
1class Solution:2def totalNQueens(self, n: int) -> int:3res = 04# 用于存放结果5pdia = set()6ndia = set()7col = set()89def backtrack(r):10# 利用r作为一种计数,表示目前所在的行数11if r == n:12# 判断已经完成棋盘,返回结果13nonlocal res14res += 115return16for c in range(n):17# 对于n行n列的棋盘,每次在每一行我们尝试n种选择,18# 即每个岔路口有n条路线19if (r + c) in pdia or (r - c) in ndia or c in col:20# 如果在同一对角线,或同一列,则不符合要求21continue22col.add(c)23pdia.add(r + c)24ndia.add(r - c)2526backtrack(r + 1)2728col.remove(c)29pdia.remove(r + c)30ndia.remove(r - c)3132backtrack(0)33return res