酷代码 AI
菜单
服务商

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

以下是解决该问题的 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 plantId; std::cin >> plantId; // 对应种类的植物数量加 1 plantCount[plantId]++; } int maxCount = 0; int mostPlantId = 0; // 遍历每种植物,找出数量最多的植物 for (int i = 1; i <= m; ++i) { if (plantCount[i] > maxCount) { maxCount = plantCount[i]; mostPlantId = i; } } // 输出数量最多的植物编号 std::cout << mostPlantId << std::endl; return 0; } ``` 代码解释: 1. 输入读取:首先读取植物的数量 `n` 和种类 `m`。 2. 计数数组:创建一个长度为 `m + 1` 的 `vector` `plantCount`,用于记录每种植物的数量,初始值都为 0。 3. 统计植物数量:通过循环读取每株植物的种类编号,并将对应种类的植物数量加 1。 4. 找出数量最多的植物:遍历 `plantCount` 数组,找出数量最多的植物,并记录其编号。 5. 输出结果:输出数量最多的植物编号。 复杂度分析: - 时间复杂度:$O(n + m)$,其中 $n$ 是植物的数量,$m$ 是植物的种类数。 - 空间复杂度:$O(m)$,主要用于存储每种植物的数量。 [2026-02-07 20:29:06 | AI问答 | 481点数解答]

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