Java实现:洛谷P1047 [NOIP2005 普及组] 校门外的树

Java实现:洛谷P1047 [NOIP2005 普及组] 校门外的树_第1张图片

抱着早晚有一天把学校的树都砍光的心态,小蒟蒻开始了洛谷冲浪!!!

Java实现:洛谷P1047 [NOIP2005 普及组] 校门外的树_第2张图片

废话不多说,看代码:

变量名称和注释很详细


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //初始化马路的长度roadLength和区域的数目number
        int roadLength = sc.nextInt();
        int number = sc.nextInt();

        //动态初始化两个数组,表示区域的起点和终点:start[];end[];
        int[] start = new int[number];
        int[] end = new int[number];
        //把输入的数据存入start[];和end[];

        for (int i = 0; i < number; i++) {
            //题目说明不需要判断输入是否合法
            start[i] = sc.nextInt();
            end[i] = sc.nextInt();
            }

            //关键代码就是3个for循环,理清思路其实很简单
            //分析:标记最开始所有树的状态都是1
            //马路的长度是roadLength,树的数量是roadLength+1
            int[] tree = new int[roadLength + 1];
            // 比如 0~4一共有(0,1,2,3,4),5棵树
            for (int i = 0; i < tree.length; i++) {
                tree[i] = 1;
            }

            for (int i = 0; i < number; i++) {
                //第i轮砍树
                for (int j = 0; j < tree.length; j++) {
                    //对所有的数进行判断
                    if (j >= start[i] && j <= end[i]) {
                        tree[j] = 0;
                    }
                }
            }
            //这里可以打印输出看看所有的tree[i]的状态

            // 最后统计所有状态为1的树的数量。
            int count = 0;
            for (int i = 0; i < tree.length; i++) {
                if (tree[i] == 1) {
                    count++;
                }
            }
            System.out.println(count);
        }
    }

好家伙,我去砍树了。

你可能感兴趣的:(洛谷,入门,java)