解题思路: 将有树的点标记为1,没有树的点标记为0
注意事项: 【马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,**即0,1,2,……,L,都种有一棵树。】说明由L+1棵树
【现在要把这些区域中的树(包括区域端点处的两棵树)移走。】说明要移走 (终止点-起始点+1)棵树
参考代码:
#include<stdio.h> int main() { int L,M,j,i; // L马路的长度;M区域的数目;i,j作循环变量; int start,end,count=0; scanf("%d %d",&L,&M); if((L<1 || L>10000) || (M<1 || M>100)) return 0; int a[L+1]; // 定义一个存储L+1长度的数组 for(i=0;i<=L;i++){ // 初始化数组内每一个元素为1,代表都有种树 a[i] = 1; } for(k=1;k<=M;k++){ scanf("%d %d",&start,&end); for(j=start;j<=end;j++){ // 遍历起始点到终止点;将值标记为0,代表树被移除 a[j] = 0; } } for(i=0;i<=L;i++){ // 再次遍历,计算剩余的树的数目 if(a[i]==1){ count++; } } printf("%d",count); return 0; }
0.0分
0 人评分