C++ 实现砍树操作统计剩余树数量的代码及解析
以下是实现该功能的 C++ 代码及详细 ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, q; // 输入树的数量 n 和操作次数 q cin >> n >> q; // 创建一个长度为 n + 1 的布尔型向量,用于标记每棵树是否被砍掉,初始都为 false 表示未被砍掉 vector<bool> trees(n + 1, false); for (int i = 0; i < q; ++i) { int L, R; // 输入每次操作的左右边界 L 和 R cin >> L >> R; // 遍历从 L 到 R 的所有树,将其标记为已砍掉 for (int j = L; j <= R; ++j) { trees[j] = true; } } int remaining = 0; // 遍历所有树,统计未被砍掉的树的数量 for (int i = 1; i <= n; ++i) { if (!trees[i]) { remaining++; } } // 输出剩余树的数量 cout << remaining << endl; return 0; } ``` ### 代码解释: 1. **输入处理**:首先读取树的数量 `n` 和操作次数 `q`。 2. **标记数组**:创建一个长度为 `n + 1` 的布尔型向量 `trees`,用于标记每棵树是否被砍掉,初始值都为 `false` 表示未被砍掉。 3. **操作处理**:对于每次操作,读取左右边界 `L` 和 `R`,并将从 `L` 到 `R` 的所有树标记为已砍掉(将对应位置的元素设为 `true`)。 4. **统计剩余树的数量**:遍历所有树,统计未被砍掉的树的数量。 5. **输出结果**:输出剩余树的数量。 ######[AI问答 | 486点数解答 | 2026-03-14 19:03:54]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)219
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)224
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)66
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)66
- mallshop商城网站:数据库设计与强大业务功能全揭秘(GPT | 257点数解答 | 2024-12-09 14:08:15)271
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)339
- Python 高效求解:让数列变身接龙数列最少需删多少数?(字节豆包 | 493点数解答 | 2025-12-13 10:25:59)55
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)269
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)301
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)308
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)449
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)352