题解
最多的花生
1 条题解
-
0
解题思路
题目要我们找出结花生最多的那一行,并输出这一行的花生总数(不用输出行号)。
方法很直接:一行一行地读,每读一行就累加出这一行的总和 s,然后用 s 去更新“目前见过的最大行总和” mx。
这就像打擂台:mx 是擂主,后来者 s 如果更大,就把擂主挤下去;如果没更大,擂主继续守着。
因为不用输出行号,所以我们不需要把整个花生地存下来,边读边算、读完整片地答案也就出来了,既省内存又简单。
参考代码
// P4457 最多的花生:逐行累加花生总数,记录遇到过的最大行总和 #include <iostream> using namespace std; int main() { int m, n, x; cin >> m >> n; int mx = 0; // 最大的行花生总数 for (int i = 1; i <= m; i++) { int s = 0; // 当前这一行的花生总数 for (int j = 1; j <= n; j++) { cin >> x; s += x; } if (s > mx) mx = s; // 更新最大值 } cout << mx << endl; return 0; }复杂度分析
- 读入 m×n 个数并逐行累加,时间复杂度是 O(m × n)。
- 只用了一小把变量,空间复杂度是 O(1)。
- 1