编辑代码

def is_safe(queen_position, queens):
    """
    检查在当前位置放置皇后是否安全。
    
    :param queen_position: 准备放置皇后的位置 (row, col)
    :param queens: 已放置皇后的位置列表
    :return: 安全返回 True,否则返回 False
    """
    row, col = queen_position
    for q_row, q_col in queens:
        if q_col == col or q_row + q_col == row + col or q_row - q_col == row - col:
            return False  # 同列或对角线冲突
    return True

def solve_n_queens(n, row=0, queens=None, solutions=None):
    """
    解决 N 皇后问题的递归函数。
    
    :param n: 棋盘大小
    :param row: 当前处理的行
    :param queens: 当前已放置皇后的位置列表
    :param solutions: 所有可能的解决方案
    :return: 所有可能的解决方案列表
    """
    if queens is None:
        queens = []
    if solutions is None:
        solutions = []

    if row == n:
        solutions.append(queens.copy())
        return solutions

    for col in range(n):
        if is_safe((row, col), queens):
            queens.append((row, col))
            solve_n_queens(n, row + 1, queens, solutions)
            queens.pop()  # 回溯

    return solutions

# 调用函数并输出结果
n = 8  # 8 皇后问题
solutions = solve_n_queens(n)
len(solutions), solutions[:2]  # 显示解决方案数量和前两个解决方案