CSP认证2019-09-2-小明种苹果(续)-(Java)100分

小明种苹果(续)

问题描述
试题编号: 201909-2
试题名称: 小明种苹果(续)
时间限制: 1.0s
内存限制: 512.0MB
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Java满分代码
在这里插入图片描述
Java代码

import java.util.Scanner;

public class Main {
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long t = 0;        // 当前苹果数量 T
        int d = 0;         // 掉落苹果树的数量 D
        int e = 0;         // 连续三颗树掉落苹果组数 E
        int[] flag = new int[5];
        // 5个数分别代表 第一课,第二课,当前树前两颗,当前树前一颗,最后树是否掉落苹果(1),用来求 E
        for(int i = 0;i < n;i++){
            boolean flag_down = false;   // 是否掉落
            long sum = 0;                // 这颗树的苹果数量
            int m = sc.nextInt();

            for(int j = 0;j < m;j++){
                int number = sc.nextInt();
                if(j == 0) sum = number;
                else if(number <= 0) sum += number;     // 疏果
                else if(number < sum){ sum = number; flag_down = true; }
            }

            t += sum;

            if(flag_down){
                d++;
                if(i == 0) flag[0] = flag[2] = 1;          // 第一课树
                else if(i == 1) flag[1] = flag[3] = 1;     // 第二课树
                else if(i == n-1){                         // 最后一棵树
                    if(flag[3] == 1 && flag[0] == 1) e++;
                    if(flag[0] == 1 && flag[1] == 1) e++;
                    if(flag[2] == 1 && flag[3] == 1) e++;
                } else {                                   // 其他树
                    if(flag[2] == 1 && flag[3] == 1) e++;
                    else { flag[2] = flag[3]; flag[3] = 1; }
                }
            } else{
                flag[2] = flag[3];
                flag[3] = 0;
            }
        }
        System.out.print(t + " " + d + " " + e);
    }
}
原文地址:https://www.cnblogs.com/jiaohuadehulike/p/14294990.html