class Solution:
"""
@param: n: The number of queens
@return: All distinct solutions
"""
def solveNQueens(self, n):
def search(cols):
if len(cols) == n:
result.append(draw_chess_board(cols))
return
for i in range(n):
if not is_valid(cols, i):
continue
search(cols + [i])
def is_valid(cols, col):
row = len(cols)
for i in range(row):
if cols[i] == col:
return False
if i + cols[i] == row + col:
return False
if i - cols[i] == row - col:
return False
return True
def draw_chess_board(cols):
chessboard = []
for i in range(len(cols)):
line = []
for j in range(len(cols)):
line.append('Q' if cols[i] == j else '.')
chessboard.append("".join(line))
return chessboard
result = []
if n <= 0:
return result
search([])
return result