小明种苹果(续)
问题描述
试题编号: 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);
}
}