酷代码 AI
菜单
服务商

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]