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:
res_list = []
land = [[False] * n for _ in range(n)]
return self.backtrack(0, land, n, set([i for i in range(n)]))
def backtrack(self, x, land, left_queens, cols):
if left_queens == 0:
return 1
n, res = len(land), 0
for y in cols:
flag = False
for i in range(n):
for _x, _y in [
(x - i, y - i),
(x + i, y - i),
(x - i, y + i),
(x + i, y + i),
]:
if 0 <= _x < n and 0 <= _y < n:
flag |= land[_x][_y]
if flag:
continue
land[x][y] = True
new_cols = cols.copy() - set([y])
left_queens -= 1
res += self.backtrack(x + 1, land, left_queens, new_cols)
left_queens += 1
land[x][y] = False
return res
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » LeetCode 52. N 皇后 II
发表评论 取消回复