华为OD机试 - 幻方修复(Java 2025 B卷 200分)

一、题目描述

幻方(Magic Square)是一个由 1~N²,共 N² 个整数构成的 N*N 矩阵,满足每行、列和对角线上的数字和相等。

上回你已经帮助小明将写错一个数字的幻方进行了修复,小明在感激之余也想进一步试试你的水平,于是他准备了有两个数字发生了位置交换的幻方。

你可以把这两个交换的数字找出来并且改正吗?

二、输入描述

第一行输入一个整数 N,代表带校验幻方的阶数(3 ≤ N ≤ 50)
接下来的 N 行,每行 N 个整数,空格隔开(1 ≤ 每个整数 ≤ N²)

三、输出描述

输出两行,代表两条纠正信息,注意先输出行号小的,若行号相同则先输出列好小的

每行输出空格隔开的三个整数,分别是:出错行号、出错列号、应填入的数字(末尾无空格)

四、解题思路

  1. 输入读取:
    • 使用 Scanner 从标准输入读取幻方的阶数 N。
    • 读取接下来的 N 行,每行 N 个整数,构成 N*N 的幻方矩阵 square。
  2. 魔数计算:
    • 魔数 M 计算公式为 M = N * (N² + 1) / 2,这是标准幻方的魔数公式。
  3. 检测错误行和列:
    • 遍历每一行,计算行和是否等于魔数 M。如果不等,将该行索引记录在 wrongRows 列表中。
    • 遍历每
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值