题解 | #N皇后问题#
N皇后问题
https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6
class Solution: def Nqueen(self, n: int) -> int: corrs = [] for i in range(n): for j in range(n): corrs.append((i, j, i * n + j)) d = [] self.count = 0 def fun(tmp, corrs, row_index): if len(tmp) == n: tmp_set = set([i[2] for i in tmp]) if tmp_set not in d: self.count += 1 d.append(tmp_set) return # 每行选1个 for i in range(n): add = True x = row_index y = i k = row_index * n + y for j in range(len(tmp)): xx, yy, kk = tmp[j] if x == xx or y == yy or abs(x - xx) == abs(y - yy): add = False break if add: removed_corrs = corrs[i+1:] fun(tmp + [[x, y, k]], removed_corrs, row_index + 1) fun([], corrs, 0) return self.count