Giả sử có một đường hầm cao 41 và rộng rất lớn. Ta có danh sách N hộp, mỗi hộp có chiều dài, rộng, cao. Một hộp có thể đi qua đường hầm nếu chiều cao của nó nhỏ hơn chặt 41. Cần tính thể tích các hộp đi qua được (thể tích = dài × rộng × cao).
Ví dụ: N = 4, boxes = [[9,5,20], [3,7,15], [8,15,41], [6,3,42]] → hộp 1 và 2 qua được, thể tích lần lượt là 900 và 315.
Giải thuật
- Định nghĩa struct Box { length, width, height }
- Hàm volume(Box) trả về length * width * height
- Hàm lower(Box) trả về true nếu height < 41
- Duyệt mảng boxes, nếu lower() thì in volume()
Ví dụ minh họa
#include <stdio.h>
#define N 4
struct Box {
int length, width, height;
};
int volume(struct Box box) {
return box.length * box.width * box.height;
}
int lower(struct Box box) {
return box.height < 41;
}
int solve(struct Box boxes[]) {
for (int i = 0; i < N; i++)
if (lower(boxes[i]))
printf("%d\n", volume(boxes[i]));
return 0;
}
int main() {
struct Box boxes[N] = {{9,5,20}, {3,7,15}, {8,15,41}, {6,3,42}};
solve(boxes);
return 0;
}
Đầu vào
4, {{9,5,20},{3,7,15},{8,15,41},{6,3,42}}
Đầu ra
900 315