top1编程
← 返回题目
题解

【入门】做纸箱最少需要多少面积的硬纸板。

1 条题解

  • 0
    @ 2026-7-31 15:24:18

    解题思路

    做一个 a×b×c 的长方体纸箱,有 5 个面要封,1 个面开口。问最少需要多少纸。

    思路:开口选最大的面。

    长方体 6 个面的总面积是 2×(ab+bc+ac)。开口的那个面不需要纸,为了省纸,应该让开口的那个面最大,这样省掉的面积最多。

    步骤:

    1. 把三条边排序,让 a ≥ b ≥ c
    2. 最大的面是 a×b,让这个面开口
    3. 剩下的 5 个面面积 = ab + 2bc + 2ac(三个面各算:ab 一个,bc 两个,ac 两个)

    为什么开口选 a×b? 因为 a 和 b 是最大的两条边,a×b 是最大的面,把它省掉用的纸最少。

    举例:5×3×4

    • 排序后 5、4、3
    • 面积 = 5×4 + 4×3×2 + 5×3×2 = 20+24+30 = 74

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int a, b, c, t;
        cin >> a >> b >> c;
    
        // 三条边从大到小排序
        if (a < b) { t = a; a = b; b = t; }
        if (a < c) { t = a; a = c; c = t; }
        if (b < c) { t = b; b = c; c = t; }
    
        // 最大面 a×b 开口
        int s = a * b + b * c * 2 + a * c * 2;
        cout << s;
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(1)
    • 空间复杂度:O(1)
    • 1