酷代码 AI
菜单

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

以下是解决该问题的 C++ 代码: ```cpp #include <iostream> #include <vector> int main() { int n, m; // 读取植物数量 n 和种类 m std::cin >> n >> m; // 定义一个长度为 m + 1 的向量来记录每种植物的数量,索引 0 不使用 std::vector<int> plantCount(m + 1, 0); // 读取每株植物的种类编号,并更新对应种类的数量 for (int i = 0; i < n; ++i) { int plantType; std::cin >> plantType; 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`。然后使用一个长度为 `m + 1` 的向量 `plantCount` 来记录每种植物的数量,索引从 1 到 `m`,索引 0 不使用。 2. 计数统计:通过循环读取每株植物的种类编号,并将对应种类的计数器加 1。 3. 查找最大值:遍历 `plantCount` 向量,找出数量最多的植物,并记录其编号和数量。 4. 输出结果:输出数量最多的植物的编号。 复杂度分析: - 时间复杂度:$O(n + m)$,其中 $n$ 是植物的数量,$m$ 是植物的种类数。 - 空间复杂度:$O(m)$,主要用于存储每种植物的数量。 [2026-01-24 20:09:11 | AI问答 | 494点数解答]

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