class Solution(object):
def solveNQueens(self, n):
"""
:type n: int
:rtype: List[List[str]]
N皇后嘛,DFS嘛,没啥,老朋友啦
"""
list_re=[]
list_curr=[]
def MatchQueen(i,j):
for x in range(len(list_curr)):
if j==list_curr[x] or i-x==j-list_curr[x]or i-x==list_curr[x]-j:
return False
else:
pass
return True
def DFS_NQ(deepth):
if deepth==n:#list_curr里边有结果[2,0,3,1]
list_temp2=[]
for i in list_curr:
list_temp=[]
for j in range(n):
if j==i:
list_temp.append('Q')
else:
list_temp.append('.')
list_temp2.append(''.join(list_temp))
list_re.append(list_temp2)
else:
for j in range(n):
if MatchQueen(deepth,j)==True:
list_curr.append(j)
DFS_NQ(deepth+1)
list_curr.pop()
else:
pass
DFS_NQ(0)
return list_re
leetcode第51题 N皇后 DFS 回溯算法
最新推荐文章于 2024-08-13 14:47:10 发布