之前写的8皇后蠢爆了,学习了一下,从新写,对递归认识进步一点。
class Solution:
def solveNQueens(self, n):
"""
:type n: int
:rtype: List[List[str]]
"""
result = []
board = [-1 for _ in range(n)]
col, pie, na = set(), set(), set()
def draw_the_board():
result.append(['.' * i + 'Q' + '.' * (n - i - 1) for i in board])
def place_queen(row):
if row == n:
draw_the_board()
return
for i in range(n):
if i not in col and i + row not in pie and i - row not in na:
board[row] = i
col.add(i)
pie.add(i + row)
na.add(i - row)
place_queen(row + 1)
col.remove(board[row])
pie.remove(board[row] + row)
na.remove(board[row] - row)
board[row] = -1
place_queen(0)
return result