酷代码 AI
菜单

本庭院里有一排树,一共有n(n<100)棵。机器人们一共把m个区域的树木都摧毁了。每个区域都包含了连续的几棵树木,其中第i个区域包含的树木为从Li开始到Ri为止之间的所有的树木。当然了,这些区域有可能会重合,但是每棵树只会被摧毁一次。请你计算一下最终还剩下几棵完好无损的树木? 输入: 第一行两个数n和m代表树的总数和区域数。 接下来m行,每行两个数Li和Ri,表示每个区域的范围。 输出: 输出1个数,表示剩余完好无损的树木棵数。 输入样例: 7 3 1 3 3 4 6 6 输出样例: 2#include <iostream> using namespace std; int a[100], n, m, l, r, sum; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { a[i] = } return 0; }

```cpp #include <iostream> using namespace std; int a[100], n, m, l, r; int main() { cin >> n >> m; // 初始化所有树木都完好 for (int i = 1; i <= n; i++) { a[i] = 1; } // 标记被摧毁的树木 for (int i = 0; i < m; i++) { cin >> l >> r; for (int j = l; j <= r; j++) { // 不管之前状态如何,将其置为0表示被摧毁 a[j]=0; } } int sum = 0; // 统计完好树木数量 for (int i = 1; i <= n; i++) { if (a[i] == 1) { sum++; } } cout << sum << endl; return 0; } ``` 代码解释: - 首先定义了数组`a`来表示每棵树的状态,`n`是树的总数,`m`是区域数,`l`和`r`用于记录每个区域的范围。 - 通过第一个`for`循环将数组`a`中所有元素初始化为`1`,表示所有树一开始都是完好的。 - 接着使用一个嵌套的`for`循环,外层循环控制区域的数量,内层循环根据输入的`l`和`r`将对应区域内的树木状态置为`0`,表示被摧毁,因为每棵树只会被摧毁一次,所以重复标记不影响结果。 - 最后再遍历一次数组`a`,统计值为`1`的元素个数,即完好树木的数量,并将结果输出。 [2026-01-24 21:20:02 | AI问答 | 422点数解答]

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