Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.

this problem is slightly different from prior one. Here we just need to update with counting number.
we can define a self.count in the __init__ so that we can update it every time when the depth==n.
the time complexity is still exponential
and the space complexity is O(n)
Here is the code.
class Solution:
# @return an integer
def __init__(self):
self.count=0
def totalNQueens(self, n):
def check(k,j):
for i in range(k):
if board[i]==j or abs(k-i)==abs(board[i]-j):
return False
return True
def dfs(depth):
if depth==n:
self.count+=1
return
for i in range(n):
if check(depth,i):
board[depth]=i
s='.'*n
dfs(depth+1)
board=[-1 for i in range(n)]
dfs(0)
return self.count
本文介绍了一种解决N皇后问题的方法,重点在于计算所有可能的解决方案数量而非输出具体的棋盘配置。通过深度优先搜索(DFS)算法,并利用递归进行回溯,实现了对不同解决方案的有效计数。
592

被折叠的 条评论
为什么被折叠?



