解题思路:

声明和初始化变量:首先声明整型变量 l 和 m 分别用于表示马路的长度和区域的数量,并初始化为0。还声明整型变量 i 和 j 用于循环计数,以及整型变量 start 和 end 用于存储每个区域的起始点和终止点。同时,声明一个整型数组 arr,用于表示马路上的树,数组长度为10000,并初始化为1。最后,声明一个整型变量 sum 用于计算剩余的树的数量。

初始化数组 arr:使用一个循环遍历从0到 l 的每个整数点,将数组 arr 中的所有元素初始化为1,表示马路上的树都存在。

处理每个区域:使用一个循环遍历每个区域,依次读取起始点和终止点,并在数组 arr 中将这个区域内的树都标记为0,表示这些树被移走了。

统计剩余的树的数量:使用一个循环遍历数组 arr,累加每个位置的值,得到剩余的树的数量。

输出结果:使用 printf 函数输出剩余的树的数量。


注意事项:

参考代码:

#include <stdio.h> // 包含标准输入输出库的头文件

int main()
{
    int l = 0, m = 0, i = 0, j = 0; // 声明整数变量 l、m、i、j
    int start, end;                // 声明整数变量 start 和 end
    scanf("%d%d", &l, &m);         // 从标准输入读取两个整数并存储在 l 和 m 中

    int arr[10000]; // 声明一个整数数组 arr,用于表示马路上每个点是否有树,初始化所有点都有树(值为1)
    int sum = 0;    // 用于计算马路上剩余的树的数量

    // 初始化 arr 数组,将所有点都设置为有树(值为1)
    for (i = 0; i <= l; i++)
    {
        arr[i] = 1;
    }

    // 循环读取 m 次,每次输入地铁区域的起始点和结束点,并将这些区域内的树标记为已移除(值为0)
    for (i = 0; i < m; i++)
    {
        scanf("%d%d", &start, &end); // 从标准输入读取起始点和结束点
        for (j = start; j <= end; j++)
        {
            arr[j] = 0; // 标记该点处的树为已移除,将 arr 数组中对应的元素设置为 0
        }
    }

    // 统计剩余马路上的树的数量
    for (i = 0; i <= l; i++)
    {
        sum += arr[i];
    }

    printf("%d", sum); // 打印剩余马路上的树的数量
    return 0;          // 返回程序的退出状态码,表示成功运行
}
点赞(0)
 

0.0分

12 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论