在每个数组的列中找到最大值

时间:2019-10-27 11:31:33

标签: c++

当前我有一个2D数组,我需要找到每个数组列的最大值并找到它们的总和。

我的代码似乎无法正常工作,因为我得到的是每一行而不是每一列的最大值,而且程序有时会两次打印相同的值。

我根据一个教程编写了这段代码,但我不知道我在哪里犯了错误。应该有基本的C ++函数(循环,if语句,数组)。

我的代码:

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int n, m, a[10][10], sum = 0, max;
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cin >> a[j][i];
        }
    }
    for (int i = 0; i < m; i++) {
        max = a[0][i];

        for (int j = 0; j < n; j = j + 1) {
            if (a[j][i] >= max) {
                max = a[j][i];

                sum = sum + a[j][i];
                cout << max << endl; //control printing to see the values
            }
        }
    }
    cout << sum;
}

输入:

3 3
3 2 3
7 5 1
6 3 5

我需要获取的输出是17,但我现在正在获取19

1 个答案:

答案 0 :(得分:0)

假设您的数组有m列和n行。

int sum = 0, max = 0;

for( int i = 0 ; i < m ; ++i )
{
    max = 0;
    for( int j = 0 ; j < n ; ++j )
    {
        if(max < a [j][i])
        {
            max = a[j][i];
        }
    }
    sum += max;
}