Cho tổng 3 cạnh của hộp chữ nhật (cuboid): S = L + B + H. Thể tích V = L × B × H. Nhiệm vụ: tìm L, B, H nguyên dương (hoặc thực) sao cho V lớn nhất.
Theo bất đẳng thức AM-GM: (L+B+H)/3 ≥ (L×B×H)^(1/3). Thể tích lớn nhất khi L = B = H = S/3.
Với số nguyên: chia S thành 3 phần càng gần nhau càng tốt.
Ví dụ 1
Input – S = 6
Output – Thể tích max = 8
Giải thích: Các tổ hợp có thể:
[1,1,4] → V=4 [1,2,3] → V=6 [2,2,2] → V=8 (MAX)
Ví dụ 2
Input – S = 10
Output – Thể tích max = 36
Giải thích: Chia gần bằng: L=3, B=3, H=4 → V=3×3×4=36
Thuật toán (chia nguyên)
- L = S / 3 (phần nguyên).
- Cập nhật S = S - L.
- B = S / 2 (phần nguyên).
- H = S - B (phần còn lại).
- Thể tích = L × B × H.
Ví dụ code
#include <bits/stdc++.h>
using namespace std;
int maximizeVolume(int sumOfSides) {
int length = sumOfSides / 3;
sumOfSides -= length;
int breadth = sumOfSides / 2;
int height = sumOfSides - breadth;
return length * breadth * height;
}
int main() {
int sos = 12;
cout << "Maximized volume: " << maximizeVolume(sos) << endl;
return 0;
}
Kết quả
Maximized volume: 64
Giải thích: S=12 → L=4, S=8 → B=4, H=4 → V=4×4×4=64.
Lưu ý: Thứ tự tính L, B, H không quan trọng do tính đối xứng. Kết quả luôn cho 3 số chênh lệch nhau tối đa 1 đơn vị.