问题:给定一个整数 n,返回 n 皇后不同的解决方案的数量。
还是N皇后问题,这道题贴出来是记录下我这次写这道题明白的一些东西。
1. 代码中的DFS函数的作用是:找到在 level 这一层的皇后的放置位置,其实就是找到level这一层的所有地址内哪一个位置放置皇后,
使得最终N皇后放完之后各皇后之间都不发生冲突。
2. 在N皇后问题里面的DFS函数中不需要判断地址是否越界,这一点不同于迷宫找路问题,因为N皇后问题在测试放置位置可不可的时候就是
for i in range(n),后面又没有地址的相加减,因此不会越界,这一点和迷宫找路问题区分开。
class Solution:
def dfs(self,level,n):
if level == n:
self.count += 1
return
for j in range(n):
y = level
x = j
flag = True
for index_x,index_y in self.index:
if x == index_x or abs(x - index_x) == abs(y - index_y):
flag = False
break
if flag:
self.index.add((j,level))
self.dfs(level+1,n)
self.index.remove((j,level))
def totalNQueens(self, n: int) -> int:
self.count = 0
self.index = set()
self.dfs(0,n)
return self.count