defsolveNQueens(n): defdef(board, row): if row == n: board_as_strings = [''.join(row) for row in board] result.append(board_as_strings) return for col inrange(n): if isValid(board, row, col): board[row][col] = 'Q' def(board, row + 1) board[row][col] = '.'
defisValid(board, row, col): if board[row][col] == 'Q': returnFalse for i inrange(row): if board[i][col] == 'Q': returnFalse i, j = row - 1, col + 1 while i >= 0and j < n: if board[i][j] == 'Q': returnFalse i -= 1 j += 1 i, j = row - 1, col - 1 while i >= 0and j >= 0: if board[i][j] == 'Q': returnFalse i -= 1 j -= 1 returnTrue
board = [['.'] * n for _ inrange(n)] result = [] def(board, 0) return result