编辑代码

def isValid(row, col, queenPos):
    for i in range(row):
        if queenPos[i] == col or abs(queenPos[i] - col) == abs(i - row):
            return False
    return True

def backtrack(row, queenPos, solutions):
    if row == 8:
        solutions.append(queenPos[:])
        return
    
    for col in range(8):
        if isValid(row, col, queenPos):
            queenPos[row] = col
            backtrack(row + 1, queenPos, solutions)

def solveNQueens():
    queenPos = [0] * 8
    solutions = []
    backtrack(0, queenPos, solutions)
    
    for solution in solutions:
        board = [['.'] * 8 for _ in range(8)]
        for i in range(8):
            board[i][solution[i]] = 'Q'
        print('\n'.join([''.join(row) for row in board]))
        print()

solveNQueens()