C++ 解决禾木种树问题:输入边界、数据结构特性及重复处理要点
```cpp #include <iostream> #include <vector> #include <unordered_set> int main() { int n, x, y; // 读取挖坑数量n,第一套方案种树数量x,第二套方案种树数量y std::cin >> n >> x >> y; // 用于存储第一套方案种树的位置 std::vector<int> plan1(x); for (int i = 0; i < x; ++i) { std::cin >> plan1[i]; } // 用于存储第二套方案种树的位置 std::vector<int> plan2(y); for (int i = 0; i < y; ++i) { std::cin >> plan2[i]; } // 使用unordered_set来存储所有要种树的位置,自动去重 std::unordered_set<int> treePositions; for (int pos : plan1) { treePositions.insert(pos); } for (int pos : plan2) { treePositions.insert(pos); } // 输出种树的数量,即unordered_set的大小 std::cout << treePositions.size() << std::endl; return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 输入时要确保输入的位置编号在合法范围内(1到n之间),虽然本题未要求检查,但实际应用中可能需要添加边界检查。 2. 使用`unordered_set`时要注意其特性,插入和查找操作的平均时间复杂度是O(1),但在极端情况下可能会退化。 3. 要注意输入的位置编号可能会有重复,使用`unordered_set`可以避免重复计数,但如果使用其他数据结构需要额外处理重复问题。 ######[AI写代码神器 | 419点数解答 | 2025-12-28 15:13:56]
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)358
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)352
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)139
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)158
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)190
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)463
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)266
- C语言数据结构期末大作业:航空客运订票系统全解析(附源码与实验文档) (讯飞星火 | 774点数解答 | 2024-06-27 22:33:20)266
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)418
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)411
- Python 验证射击子弹顺序是否符合栈特性,代码逻辑全解析!(字节豆包 | 300点数解答 | 2024-11-29 19:33:47)268
- Python程序:多人物9参数雷达图生成,参数折合百分制展示(字节豆包 | 873点数解答 | 2026-01-11 21:07:42)42