错误,得分50,贴错误代码
package csp;
import java.util.Arrays;
import java.util.Scanner;
public class csp20190902 {
public static void main(String[] args) {
int T=0;
int max=0;
int input=0;
int D=0; //记录掉苹果树数目
int E=0;
int sum=0;//记录苹果总数
int init=0;
int flag=0;
Scanner sc =new Scanner(System.in);
int N = sc.nextInt();
int isfall[]= new int[N];
Arrays.fill(isfall, 0);
for(int i=0;i<N;i++) {
max=sc.nextInt();
init=sc.nextInt();
flag=0;
for(int j=0;j<max-1;j++) {
input=sc.nextInt();
if(input<=0) {
init=init+input;
}
else {
// if(input==init) {
// init=input;
// }
// else if(input<init){
// init=input;
// isfall[i]=1;
// D=D+1;
// }
if(input<init) {
init=input;
isfall[i]=1;
D=D+1;
// flag=1;
}
init=input;
}
}
sum+=init;
// if(flag==1) {
// D+=1;
// isfall[i]=1;
// }
}
for(int i=0;i<N;i++) {
int p=i+1;
int q=i+2;
if(p>=N) {
p=p-N;
}
if(q>=N) {
q=q-N;
}
if(isfall[i]==1&&isfall[p]==1&&isfall[q]==1) {
E=E+1;
}
}
System.out.println(sum+" "+D+" "+E);
}
}
错误原因,当一行数字里面有两次掉落,掉落苹果的树的数目就会加两次
正确代码
package csp;
import java.util.Arrays;
import java.util.Scanner;
public class csp20190902 {
public static void main(String[] args) {
int T=0;
int max=0;
int input=0;
int D=0; //记录掉苹果树数目
int E=0;
int sum=0;//记录苹果总数
int init=0;
int flag=0;
Scanner sc =new Scanner(System.in);
int N = sc.nextInt();
int isfall[]= new int[N];
Arrays.fill(isfall, 0);
for(int i=0;i<N;i++) {
max=sc.nextInt();
init=sc.nextInt();
flag=0;
for(int j=0;j<max-1;j++) {
input=sc.nextInt();
if(input<=0) {
init=init+input;
}
else {
if(input<init) {
flag=1;
}
init=input;
}
}
sum+=init;
if(flag==1) {
D+=1;
isfall[i]=1;
}
}
for(int i=0;i<N;i++) {
int p=i+1;
int q=i+2;
if(p>=N) {
p=p-N;
}
if(q>=N) {
q=q-N;
}
if(isfall[i]==1&&isfall[p]==1&&isfall[q]==1) {
E=E+1;
}
}
System.out.println(sum+" "+D+" "+E);
}
}