码迷,mamicode.com
首页 > 其他好文 > 详细

练习题 | 校门外的树

时间:2017-10-15 23:22:35      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:count   for   size   包含   计算   nbsp   static   int()   多少   

题名  校门外的树

问题描述

某校大门外长度为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 }

 

 

练习题 | 校门外的树

标签:count   for   size   包含   计算   nbsp   static   int()   多少   

原文地址:http://www.cnblogs.com/INGRID-ThinkDifferent-20/p/7674685.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!