题解
【入门】做纸箱最少需要多少面积的硬纸板。
1 条题解
-
0
解题思路
做一个 a×b×c 的长方体纸箱,有 5 个面要封,1 个面开口。问最少需要多少纸。
思路:开口选最大的面。
长方体 6 个面的总面积是 2×(ab+bc+ac)。开口的那个面不需要纸,为了省纸,应该让开口的那个面最大,这样省掉的面积最多。
步骤:
- 把三条边排序,让 a ≥ b ≥ c
- 最大的面是 a×b,让这个面开口
- 剩下的 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