原题链接:校门外的树
解题思路:
声明和初始化变量:首先声明整型变量 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分
12 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复