You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Python程序判断给定N×N矩阵是否构成幻方

判断给定矩阵是否为幻方

问题描述

给定一个N×N矩阵,每个元素取值范围为1到N²,当矩阵的每行、每列及两条对角线的元素和均相等时,该矩阵即为幻方。需编写Python代码判断输入矩阵是否符合幻方要求。

测试用例:

  • 维度N=3
  • 输入矩阵:
    6 3 6
    5 5 5
    4 7 4
    

解决方案代码

def is_magic_square(matrix, n):
    # 验证矩阵是否为N×N结构
    for row in matrix:
        if len(row) != n:
            return False
    
    # 以第一行的和作为目标校验和
    target_sum = sum(matrix[0])
    
    # 校验所有行的和是否一致
    for row in matrix:
        if sum(row) != target_sum:
            return False
    
    # 校验所有列的和是否一致
    for col_idx in range(n):
        col_sum = sum(matrix[row_idx][col_idx] for row_idx in range(n))
        if col_sum != target_sum:
            return False
    
    # 校验主对角线(左上→右下)的和
    main_diag_sum = sum(matrix[i][i] for i in range(n))
    if main_diag_sum != target_sum:
        return False
    
    # 校验副对角线(右上→左下)的和
    anti_diag_sum = sum(matrix[i][n-1-i] for i in range(n))
    if anti_diag_sum != target_sum:
        return False
    
    # 校验所有元素是否在合法取值范围内
    max_valid_val = n * n
    for row in matrix:
        for num in row:
            if not (1 <= num <= max_valid_val):
                return False
    
    return True

# 测试用例
if __name__ == "__main__":
    test_matrix = [
        [6, 3, 6],
        [5, 5, 5],
        [4, 7, 4]
    ]
    n = 3
    print(is_magic_square(test_matrix, n))  # 输出:True

代码说明

  1. 矩阵结构校验:确保输入的每一行长度都等于N,保证是标准N×N矩阵。
  2. 目标和确定:以第一行的元素和作为基准值,后续所有行、列、对角线的和都需与该值匹配。
  3. 行/列和校验:遍历每一行和每一列,计算元素和并与目标和比对。
  4. 对角线和校验:分别计算主对角线(左上到右下)和副对角线(右上到左下)的元素和,验证是否等于目标和。
  5. 元素范围校验:检查每个元素是否在1到N²的合法取值区间内。

针对提供的测试用例,所有行、列、对角线的和均为15,且元素均在1-9的合法范围内,因此代码返回True。

内容的提问来源于stack exchange,提问作者Peoush Chakraborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:10:11