酷代码 AI
菜单
服务商

c++题目描述 A市的道路旁有一排绿化带,绿化带里种上了不同种类的植物,现在已知绿化带里一共种植了n株植物,植物种类共有m种,编号为1~m。为了更好的保护城市环境,现在星宇博士想要知道其中哪个种类的植物数量最多。作为博士的得力助手,请你设计一个程序,统计数量最多的植物是哪一种吧。 输入描述 输入共两行,第一行为两个整数n,m,分别代表植物数量和种类。数字之间用空格隔开。第二行包含n个整数,是每株植物对应的种类编号,数字之间用空格隔开。数据保证数量最多的植物只有一种。 输出描述 一个整数,为数量最多的植物对应的编号

以下是解决该问题的 C++ 代码: ```cpp #include <iostream> #include <vector> int main() { int n, m; // 读取植物数量 n 和种类 m std::cin >> n >> m; // 用于记录每种植物的数量,初始化为 0 std::vector<int> plantCount(m + 1, 0); for (int i = 0; i < n; ++i) { int plantType; // 读取每株植物的种类编号 std::cin >> plantType; // 对应种类的植物数量加 1 plantCount[plantType]++; } int maxCount = 0; int maxType = 0; // 遍历每种植物的数量,找出数量最多的植物 for (int i = 1; i <= m; ++i) { if (plantCount[i] > maxCount) { maxCount = plantCount[i]; maxType = i; } } // 输出数量最多的植物的编号 std::cout << maxType << std::endl; return 0; } ``` 代码解释: 1. 输入读取:首先读取两个整数 `n` 和 `m`,分别表示植物的数量和种类。然后使用 `for` 循环读取 `n` 个整数,表示每株植物的种类编号。 2. 数量统计:使用一个长度为 `m + 1` 的 `vector` 数组 `plantCount` 来记录每种植物的数量,数组的下标表示植物的种类编号,初始值都为 0。在读取每株植物的种类编号时,将对应下标的元素值加 1。 3. 找出数量最多的植物:遍历 `plantCount` 数组,记录下数量最多的植物的编号和数量。 4. 输出结果:输出数量最多的植物的编号。 复杂度分析: - 时间复杂度:$O(n + m)$,其中 $n$ 是植物的数量,$m$ 是植物的种类。需要遍历一次植物编号来统计数量,再遍历一次种类数组来找出数量最多的植物。 - 空间复杂度:$O(m)$,主要用于存储每种植物的数量。 [2025-12-28 15:14:44 | AI问答 | 531点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多