• 校门外的树


    校门外的树

    问题描述:

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

    分析

    1. 动态生成一个INT型数组,存的数据从1开始直到(L+1)结束。
    2. 输入一个区域之后,即从数组里将包含的数据变成0。
    3. 计算0的个数,以(L+1)减去既是剩余的树的数目。

    解决方案:

    public class Grids2808 {
    
    /**
     * @Murderer
     */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		@SuppressWarnings("resource")
    		Scanner sc = new Scanner(System.in);
    		int L, M = 0;
    		
    		System.out.println("请输入马路的长度L和要建地铁的区域数目M:");
    		L = sc.nextInt();
    		int Road[];
    		Road = new int[L];
    		
    		//下面开始种树
    		for (int i = 1; i < L+1; i++) {
    			Road[i-1] = i;
    		}
    		
    		M = sc.nextInt();
    		
    		System.out.println("输入这" + M + "组数据:");
    		//下面开始砍树
    		for (int i = 0; i < M; i++) {
    			int begin, end = -1;
    			begin = sc.nextInt();
    			end   = sc.nextInt();
    			for (int j = begin; j <= end; j++) {
    				Road[j] = 0;
    			}
    		}
    		//下面计算被砍掉的树的数目
    		int count = 0;
    		for (int i = 0; i < L; i++) {
    			if (Road[i] == 0)
    				count++;
    		}
    		
    		System.out.println("还剩下" + (L + 1 - count) + "棵树。");
    		
    	}
    }
  • 相关阅读:
    zoj 3627 Treasure Hunt II (贪心)
    1028
    DB2数据库性能优化介绍
    Python之美[从菜鸟到高手]--深刻理解原类(metaclass)
    Java和C++中多态的实现方式
    汉语-词语-停留:百科
    汉语-词语-体会:百科
    汉语-词语-味道:百科
    笔记-生活-饮食:香料妙用
    汉语-词语-香料:百科
  • 原文地址:https://www.cnblogs.com/gcy77/p/4083374.html
Copyright © 2020-2023  润新知