week3-[二维数组]最大列
week3-[二维数组]最大列
题目描述
给定一个 nnn 行 mmm 的二维数组 aija_{ij}aij,找出其中的一列使得这列的元素和最大。输出这列的元素和。
输入格式
输入共 n+1n + 1n+1 行。
第 111 行 222 个正整数 n,mn,mn,m。
接下来 nnn 行,每行 mmm 个用空格隔开的正整数 aija_{ij}aij。
输出格式
输出共 111 行 111 个整数表示答案。
样例 #1
样例输入 #1
3 4
1 2 3 4
4 3 2 1
3 2 2 3
样例输出 #1
8
提示
样例解释 111
第 111 列与第 444 列的元素和都是 888。
数据范围
对于所有数据,1≤n,m,aij≤1001\leq n,m,a_{ij}\leq 1001≤n,m,aij≤100。
这题要求找二维数组中 列和最大的一列,核心思路是按列累加求和,然后取最大值。
🔎 分析
- 输入 n×m 数组。
- 对每一列
j
:- 计算该列的元素和:
sum = a[0][j] + a[1][j] + ... + a[n-1][j]
- 更新最大值
max_sum
- 计算该列的元素和:
- 输出
max_sum
。
注意是求最大 列和,不需要输出具体列,只要输出和即可。
🖥️ C++ 实现
#include <bits/stdc++.h>
using namespace std;int main() {int n,m;cin >> n >> m;vector<vector<int>> a(n, vector<int>(m));for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin >> a[i][j];int max_sum = 0;for(int j=0;j<m;j++){int col_sum = 0;for(int i=0;i<n;i++)col_sum += a[i][j];max_sum = max(max_sum, col_sum);}cout << max_sum << endl;return 0;
}