又到过年了,狗熊岭的动物们都忙碌了起来,张灯结彩准备过年。李老板却要光头强砍一些百年美人松回去。美人松都是很高的,它们的高度不超过长整型。现在光头强看到丛林里有N棵美人松,当然每棵松的高度是已知的。李老板要问光头强M次,每次询问高度为K的美人松有多少棵?
时间: 2024-09-29 15:07:27 浏览: 128
这是一个经典的查询问题,可以通过使用哈希表或数组来高效地解决。我们可以创建一个大小为整数最大值(例如 `INT_MAX + 1`)的数组,其中索引代表树的高度,值代表具有该高度的美人松的数量。然后,对于每棵树,我们更新相应高度的计数值。
以下是C++代码来解决这个问题:
```cpp
#include <iostream>
using namespace std;
int main() {
int N, M, K;
cin >> N; // 总共有N棵美人松
int tree_heights[N]; // 存储每棵树的高度
// 读取每棵树的高度并存储在数组中
for (int i = 0; i < N; i++) {
cin >> tree_heights[i];
}
// 初始化一个大小为INT_MAX+1的计数数组
int count_array[INT_MAX + 1] = {0};
// 更新数组,统计每个高度的树木数量
for (int i = 0; i < N; i++) {
count_array[tree_heights[i]]++;
}
// 解决李老板的问题
cin >> M;
while (M--) {
cin >> K;
// 查找并输出高度为K的美人松数量
cout << "Number of trees with height " << K << ": " << count_array[K] << endl;
}
return 0;
}
```
在这个程序中,首先读入所有树的高度,然后计算每个高度对应的树木数量。当李老板询问时,直接从数组中查找对应的高度值即可得到答案。
阅读全文