top1编程
← 返回题目
题解

【入门】求最大梯形的面积

1 条题解

  • 0
    @ 2026-7-31 15:06:50

    解题思路

    题目要求找出 n 个梯形里面积最大的那个,输出它的面积。

    思路:

    1. 逐个读入每个梯形的上底 a、下底 b、高 h
    2. 用公式算面积:S = (a + b) × h ÷ 2
    3. 和当前最大值比较,大的就更新
    4. 全部算完后输出最大值,保留 1 位小数

    为什么用打擂台? 一个一个比较,遇到更大的就换,最后剩下的就是最大值。

    举例:三个梯形

    • (1,2,3):面积 (1+2)×3÷2 = 4.5
    • (3,4,5):面积 (3+4)×5÷2 = 17.5
    • (2,3,4):面积 (2+3)×4÷2 = 10
    • 最大是 17.5

    参考代码

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        double mx = 0;
    
        for (int i = 0; i < n; i++) {
            double a, b, h;
            cin >> a >> b >> h;
            double s = (a + b) * h / 2;  // 梯形面积
            if (s > mx) mx = s;
        }
    
        cout << fixed << setprecision(1) << mx;
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(N),逐个算面积
    • 空间复杂度:O(1)
    • 1