当前我有一个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
。
答案 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;
}