编辑代码

def is_safe(board, row, col, n):
    # Check if there is a queen in the same column
    for i in range(row):
        if board[i][col] == 1:
            return False

    # Check upper left diagonal
    for i, j in zip(range(row, -1, -1), range(col, -1, -1)):
        if board[i][j] == 1:
            return False

    # Check upper right diagonal
    for i, j in zip(range(row, -1, -1), range(col, n)):
        if board[i][j] == 1:
            return False

    return True

def solve_n_queens_util(board, row, n):
    if row == n:
        # All queens are placed successfully
        return [row[:] for row in board]

    result = []
    for col in range(n):
        if is_safe(board, row, col, n):
            board[row][col] = 1
            # Recur for the next row
            solutions = solve_n_queens_util(board, row + 1, n)
            if solutions:
                result.extend(solutions)
            board[row][col] = 0  # Backtrack

    return result

def solve_n_queens(n):
    board = [[0] * n for _ in range(n)]
    return solve_n_queens_util(board, 0, n)

# Example usage:
n = 8
solutions = solve_n_queens(n)
for solution in solutions:
    print(solution)