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