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

HackerRank中C#实现Diagonal Difference挑战测试失败求助

问题原因分析(针对你的测试用例输出3的情况)

最可能的原因是输入读取逻辑错误,把矩阵边长n也当成了矩阵元素填充到矩阵中,导致矩阵元素错位,最终计算出错误的对角线差。

你的测试用例输入是:

3
11 2 4
4 5 6
10 8 -12

如果代码将所有输入(包括第一行的3)合并成一个数组,然后从索引0开始填充矩阵:

  • 矩阵第一行变成 [3, 11, 2]
  • 第二行变成 [4, 4, 5]
  • 第三行变成 [6, 10, 8]

此时计算对角线和:

  • 主对角线:3 + 4 + 8 = 15
  • 副对角线:2 + 4 + 6 = 12
  • 绝对值差:|15 - 12| = 3,正好和你提交后的输出一致。

另外可以排查的其他常见错误:

  • 副对角线索引计算错误:比如误将副对角线写成matrix[i][i](和主对角线重复),或者索引公式写错(比如用matrix[n-i][i]而非matrix[i][n-1-i])。但这种情况本地测试也会出错,和你描述的本地正常不符。
  • 输入行读取不完整:比如只读取了部分行,导致矩阵未被正确填充,但这种情况通常会引发索引越界错误,你说无报错信息,可能性较低。
  • 绝对值计算遗漏:如果直接输出主副对角线的差值而非绝对值,结果会是负数,但你的输出是3,不符合这个情况。
修复方案

针对最可能的输入读取错误,调整代码逻辑:
逐行读取输入,第一行获取矩阵边长n,后续每一行对应矩阵的一行,避免把n混入矩阵元素。示例代码:

int n = int.Parse(Console.ReadLine());
int[][] matrix = new int[n][];
for (int i = 0; i < n; i++)
{
    matrix[i] = Console.ReadLine().Split(' ')
                                 .Select(int.Parse)
                                 .ToArray();
}

内容的提问来源于stack exchange,提问作者Nano Taboada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 23:00:07