题解
【入门】纸盒的最大体积是多少?
1 条题解
-
0
解题思路
n×n 的正方形硬纸板,四个角各剪掉一个 m×m 的小正方形,折起来就是无盖纸盒。求纸盒最大体积。
思路:枚举剪掉的小正方形边长。
- 剪掉 m 厘米后,纸盒的底边长 = n - 2m
- 纸盒的高 = m
- 体积 = 底面积 × 高 = (n-2m)² × m
- 枚举 m 从 1 到 n÷2,算每种情况的体积,取最大
为什么 m 最多到 n÷2? 因为要剪掉两个 m(两边各一个),n - 2m 必须大于 0,所以 m < n÷2。
举例:n=5
- m=1:体积 = (5-2)²×1 = 9
- m=2:体积 = (5-4)²×2 = 2
- 最大是 9
参考代码
#include <iostream> using namespace std; int main() { long long n; cin >> n; long long mx = 0; for (long long m = 1; m <= n / 2; m++) { long long v = (n - 2 * m) * (n - 2 * m) * m; // 体积 if (v > mx) mx = v; } cout << mx << endl; return 0; }复杂度分析
- 时间复杂度:O(N),枚举到 n/2
- 空间复杂度:O(1)
- 1