top1编程
← 返回题目
题解

【入门】纸盒的最大体积是多少?

1 条题解

  • 0
    @ 2026-7-31 15:56:53

    解题思路

    n×n 的正方形硬纸板,四个角各剪掉一个 m×m 的小正方形,折起来就是无盖纸盒。求纸盒最大体积。

    思路:枚举剪掉的小正方形边长。

    1. 剪掉 m 厘米后,纸盒的底边长 = n - 2m
    2. 纸盒的高 = m
    3. 体积 = 底面积 × 高 = (n-2m)² × m
    4. 枚举 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