【问题标题】:Diagonal Difference of a Square Matrix方阵的对角线差
【发布时间】:2020-05-22 15:39:51
【问题描述】:

我正在尝试一些 HackerRank 挑战来打发一些时间,我遇到了一个简单的练习,我需要计算方阵对角线之和之间的绝对差。我真的相信这是一个简单的练习,应该花费很少的时间来完成,但我的算法似乎由于某种原因无法正常工作,因为我不断为我的输出获取随机值。

这是我的代码:

int diagonalDifference(vector<vector<int>> arr) {

int d1, d2, i = 0;
int size = arr.size();

for (i ; i < size ; i++){
    d1 += arr[i][i];
    d2 += arr[(size - 1) - i][i];
}

return abs(d1 - d2);}

我的算法简单直接,它在同一个 for 循环中计算两条对角线,该循环只对矩阵所具有的行/列进行迭代/重复(因为它是方阵)。

练习链接:https://www.hackerrank.com/challenges/diagonal-difference/problem

*请注意,它是用 C++ 编写的。

【问题讨论】:

    标签: c++ arrays matrix diagonal


    【解决方案1】:

    您正在循环中使用 d1d2 未初始化,这会调用未定义的行为。您需要像这样初始化它们:

    int d1 = 0, d2 = 0, i = 0;
    

    请注意,如果您打开尽可能多的警告,编译器会警告您此类错误。

    【讨论】:

    • "int d1, d2, i = 0" 只初始化 'i' 吗?
    • 不用担心。同样,请在编译时接受有关打开所有警告的建议。编译器会对此发出警告。
    • 我将我的代码直接写入 HackerRank 的编辑器,这就是为什么我没有收到任何我通常会在我的编译器上得到的警告的原因。不过谢谢你的建议。
    • 好的,但是当您遇到错误时,请考虑将您的代码粘贴到像 godbolt.org 这样的在线编译器中。您可以在那里自定义编译器标志,而且不需要太多额外的努力:)
    猜你喜欢
    • 2017-02-26
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多