首页 > 解决方案 > 为什么我从 4 中减去 19 得到的返回值为 1

问题描述

这是我的函数,真的很乱,只是想弄清楚如何得到答案,然后优化它。

但基本上你必须减去矩阵中两条对角线中每个字符的总和。

r 是矩阵的大小(fe 3 = 3 行和 3 列)

然后输入每个字符。所以输入应该看起来像

3
11 2 4
4 5 6
10 8 -12

所以最后,我得到 leftD = 4 和 rightD = 19。

abs(4-19) 应该是 15,但由于某种原因,我一直得到 1,即使我尝试了一百万个不同的版本。

(这是来自hackerrank的问题)

using namespace std;

int diagonalDifference(vector<vector<int> > arr)
{
    int r;
    int c;
    int leftD = 0;
    int rightD = 0;
    int diff;
    cin >> r;
    int x = 0;
    for (int i = 0; i < r; i++) {
        arr.push_back(vector<int>());
        for (int j = 0; j < r; j++) {
            cin >> x;
            arr[i].push_back(x);
        }
    }
    for (int i = 0; i < r; i++) {
        leftD += arr[i][i];
    }
    for (int i = 1; i < r - 1; i++) {
        rightD += arr[0][r - 1] + arr[i][i] + arr[r - 1][0];
    }
    diff = abs(leftD - rightD);
    return diff;
}

int main()
{
    vector<vector<int> > arr;
    diagonalDifference(arr);
    cout << diagonalDifference;
}

标签: c++

解决方案


您需要保存从函数返回的值。目前你只是丢弃它。

尝试:

int result = diagonalDifference(arr);
cout << result;

推荐阅读