试题编号: | 201909-2 |
试题名称: | 小明种苹果(续) |
时间限制: | 1.0s |
内存限制: | 512.0MB |
方法1:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int T=0,D=0,E=0;
int N=in.nextInt();
int [][]trees = new int[N][1000]; //记录从第二行开始的每行从第二个数开始的输入
// int []book = new int[1000]; //记录每行第一个数即每个book[N]中前几个数是有效的
int []drop = new int[N]; //记录某棵树是否掉落
// for(int a : book) a = -1000;
for(int x : drop) x = -1000;
for(int i=0; i<N;i++){
int tmp = in.nextInt();
// book[i] = tmp;
for(int j = 0;j<tmp;j++){
trees[i][j] = in.nextInt();
}
}
int sum=0; //最原始的苹果总数
// for(int i = 0;i<trees.length;i++){
// sum+=trees[i][0];
// }
//计算最终剩下的苹果总数
for(int i = 0;i<trees.length;i++){
int temp = trees[i][0];
for(int j = 1;j<trees[i].length;j++){
if(trees[i][j]<0){
temp += trees[i][j];
}else if(trees[i][j]>0){ //这里要具体判断是否有掉落 因为有可能出现检查了但没掉落的情况
if(temp != trees[i][j]){
temp = trees[i][j];
drop[i] = 1;
}
}
}
sum+=temp;
}
//计算有几棵树发生过掉落
int dropSum = 0;
for(int i = 0;i<drop.length;i++){
if(drop[i] == 1){
dropSum++;
}
}
int group = 0;
//计算相邻连续三棵都发生掉落的组数
for(int i = 0;i<drop.length;i++){
int a = drop[i];
int b = drop[(i+1)%(N)];
int c = drop[(i+2)%(N)];
if(a==1 && b ==1 && c==1) group++;
}
System.out.println(sum + " " + dropSum + " " + group);
}
}
代码长度 | 编程语言 | 评测结果 | 得分 | 时间使用 | 空间使用 | |||||
---|---|---|---|---|---|---|---|---|---|---|
2.022KB | JAVA | 正确 | 100 | 812ms | 163.8MB |