top1编程
← 返回题目
题解

最多的花生

1 条题解

  • 0
    @ 2026-8-5 0:56:09

    解题思路

    题目要我们找出结花生最多的那一行,并输出这一行的花生总数(不用输出行号)。

    方法很直接:一行一行地读,每读一行就累加出这一行的总和 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