题目分析:
这个题与我之前【LeetCode】51. N-Queens的解法是一致的,不过为了最后返回一个结果我们把dfs单独写出来,并建立一个self.count
的对象用来记录数值。也可以看这篇进行理解Python使用元组+递归简单解决八皇后问题。
测试代码:
class Solution:
def yesNo(self, k, j):
for i in range(k):
if self.state[i] == j or k - i == abs(self.state[i] - j):
return False
return True
def dfs(self, depth):
if depth == self.n: self.count += 1; return
for i in range(self.n):
if self.yesNo(depth, i):
self.state[depth] = i
self.dfs(depth + 1)
def totalNQueens(self, n: int) -> int:
self.n = n
self.state = [-1 for i in range(n)]
self.count = 0
self.dfs(0)
return self.count
print(Solution().totalNQueens(8)) #提交时请删除该行