练习题 | 校门外的树

题名  校门外的树

问题描述

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止

输入数据

输入的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

输出要求

输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

输入样例

500 3

150 300

100 200

470 471

输出样例

298

思考 

可先将马路上所有种了树的点全都标识为0,再把各区域中的点覆盖标识为1,最后计数0的个数,即为马路上剩余树的数目。

代码如下 
 1 import java.util.Scanner;
 2 
 3 public class Tree {
 4 
 5     public static void main(String[] args) {
 6         // TODO 自动生成的方法存根
 7         //校门外的树
 8         Scanner scan=new Scanner(System.in);
 9         int L=scan.nextInt();
10         int M=scan.nextInt();
11         
12         int[]startP=new int[M];
13         int[]finishP=new int[M];
14         for(int i=0;i<M;i++){
15                 startP[i]=scan.nextInt();
16                 finishP[i]=scan.nextInt();
17         }
18         scan.close();//按要求输入数据
19         
20         int[]tree=new int[L+1];//一共L+1颗树
21         for(int i=0;i<M;i++){
22             for(int k=startP[i];k<=finishP[i];k++){
23                 tree[k]=1;
24             }
25         }//将要移走的树标识为“1”
26         
27         int counter = L+1;
28         for(int k=0;k<L+1;k++){
29             if(tree[k]==1)counter-=1;
30         }//计数还剩多少棵树
31         System.out.print(counter);  
32     
33     }
34 }

 

 

转载于:https://www.cnblogs.com/INGRID-ThinkDifferent-20/p/7674685.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值