CSP201909-2(小明种苹果(续))(java100分)

CSP201909-2(小明种苹果(续))(java100分)_第1张图片
CSP201909-2(小明种苹果(续))(java100分)_第2张图片
CSP201909-2(小明种苹果(续))(java100分)_第3张图片
在第一题的基础上就可以继续写了,由于每行输入的数字数量不确定,所以把每行存入字符串里。之后3个答案分别计算

import java.util.*;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String s1 = sc.nextLine();
		int n = Integer.parseInt(s1);
		String [] s = new String[n];
		for (int i = 0; i < s.length; i++) {
			s[i] = sc.nextLine(); 
		}
		int t=0,d=0,e=0;
		for (int i = 0; i < n; i++) {
			String [] a = s[i].split(" ");
			for (int j = a.length-1; j > 0 ; j--) {//从后往前看最小正整数
				if(Integer.parseInt(a[j])>0)
				{
					for (int j2 = j; j2 < a.length; j2++) {
						t += Integer.parseInt(a[j2]);
					}
					break;
				}
			}
		}//计算t
		int num1 = 0,num2 = 0;//苹果个数
		
		int[] b = new int [n];//标记掉果树,0为没掉,1为掉了
		for (int i = 0; i < b.length; i++) {
			b[i] = 0;
		}
		
		for (int i = 0; i < n; i++) {
			String [] a = s[i].split(" ");			
outer:			for (int j = 1; j < a.length; j++) {								
				if(Integer.parseInt(a[j])>0)
				{
					num1 = Integer.parseInt(a[j]);//记住它,num1为前一个正整数
					
					for (int j2 = j+1; j2 < a.length; j2++) {
						if(Integer.parseInt(a[j2])>0)
						{
							num2 = Integer.parseInt(a[j2]);//num2为后一个正整数
							for (int k = j+1; k < j2; k++) {
								num1 += Integer.parseInt(a[k]);
							}
							if(num1>num2)
							{
								d++;		//d统计
								b[i]++;		//在b[]中标记为1
								break outer;
							}
							j = j2;					
						}					
					}
				}
			}
		}//计算掉果树的棵树d
		
		for (int i = 0; i <= b.length-3; i++) {     //有无连续3个掉果树
			if(b[i]==1 && b[i+1]==1 && b[i+2]==1)
			{
				e++;
			}
		}
		if(b[b.length-1]==1 && b[0]==1 && b[1]==1)		//首尾端有无连续3个掉果树
			{
				e++;
			}
		if(b[b.length-2]==1 && b[b.length-1]==1 && b[0]==1)		//首尾端有无连续3个掉果树
			{
				e++;
			}
//计算连续3棵情况有多少		
		System.out.println(t+" "+d+" "+e);
	}

}

你可能感兴趣的:(csp)