51. N-Queens
BFS解决
class Solution:
"""
@param: n: The number of queens
@return: All distinct solutions
"""
def solveNQueens(self, n):
res = []
def valid(present, col, new):
for i, j in enumerate(present):
if new==j or new==j+(col-i) or new==j-(col-i):
return False
return True
def generateSolution(indexList):
solution = []
for c in indexList:
column = ""
for _ in range(n):
if _ == c:
column += "Q"
else:
column += "."
solution.append(column)
return solution
queue = collections.deque([[_] for _ in range(n)])
while queue:
cur = queue.popleft()
already = len(cur)
if already == n:
res.append(generateSolution(cur))
else:
for pos in range(n):
if valid(cur, already, pos):
queue.append(cur+[pos])
return res
Last updated
Was this helpful?