C++ 算法题:计算无盖纸盒最大体积
C++ 算法题:计算无盖纸盒最大体积
问题描述
在一张尺寸为 n * n 厘米的正方形硬纸板的四个角上,分别裁剪掉一个 m * m 厘米的小正方形,就可以做成一个无盖纸盒。请问这个无盖纸盒的最大体积是多少?
(立方体的体积 v = 底面积 * 高)
例如:
如果 n = 5,那么裁掉的小正方形的尺寸可能是 1 厘米、2 厘米
- 如果裁掉 1 厘米的四个小正方形,得到纸盒的体积 = (5 - 2) * (5 - 2) * 1 = 9 立方厘米
- 如果裁掉 2 厘米的四个小正方形,得到纸盒的体积 = (5 - 4) * (5 - 4) * 2 = 2 立方厘米
因此,裁掉边长为 2 的四个小正方形得到的纸盒体积最大,最大体积为 9(立方厘米)。
输入描述
一个整数 n,代表正方形纸板的边长
输出描述
纸盒的最大体积
用例输入 1
5
用例输出 1
9
代码示例
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int maxVolume = 0;
for (int m = 1; m <= n / 2; m++) {
int volume = (n - 2 * m) * (n - 2 * m) * m;
if (volume > maxVolume) {
maxVolume = volume;
}
}
cout << maxVolume << endl;
return 0;
}
算法分析
该算法的核心思想是遍历所有可能的裁剪尺寸 m,计算每个尺寸对应的纸盒体积,并找出最大值。代码中使用循环遍历所有可能的 m 值,并利用公式 (n - 2 * m) * (n - 2 * m) * m 计算纸盒体积。
注意事项
- 裁剪尺寸 m 的最大值为 n / 2,因为裁剪尺寸超过 n / 2 会导致纸盒无法形成。
- 代码中使用变量 maxVolume 记录最大体积,并不断更新。
总结
本算法题通过简单的循环遍历和体积计算公式,就可以求解出无盖纸盒的最大体积。该算法可以帮助你理解如何使用循环遍历和判断语句来解决实际问题。
原文地址: https://www.cveoy.top/t/topic/hnt0 著作权归作者所有。请勿转载和采集!