解题思路:
声明和初始化变量:首先声明整型变量 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分
2 人评分
C二级辅导-等差数列 (C语言代码)浏览:564 |
C二级辅导-计负均正 (C语言代码)浏览:499 |
2^k进制数 (C++代码)使用递归方法浏览:712 |
C二级辅导-等差数列 (C语言代码)浏览:1208 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:502 |
钟神赛车 (C++代码)浏览:852 |
C二级辅导-同因查找 (C语言代码)浏览:579 |
C语言训练-素数问题 (C语言代码)浏览:1641 |
校门外的树 (C语言代码)浏览:689 |
printf基础练习2 (C语言代码)浏览:737 |