SH2018笔试题之成长值问题

时间:2022-01-06 14:40:03

一、题目

     详见代码

二、代码

import java.util.Scanner;

/**
 * 3
 * 1 1 5 10
 * 2 3 4
 * 1 4 6 -5
 */
public class main4 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while (in.hasNext()) {
            //输入行数row
            int row = in.nextInt();

            //输入成长值
            String[] strArr = new String[row];
            String a = in.nextLine();
            for (int i = 0; i < strArr.length; i++) {
                strArr[i] = in.nextLine();
            }

            //test
            System.out.println(strArr[0]);
            System.out.println(strArr[1]);
            System.out.println(strArr[2]);
            //

            //计算成长值
            int mLast = 0; //每日成长值开始时间
            int nLast = 0; //每日成长值结束时间
            int valueLast = 0;//每日成长值
            int mNext = 0; //每日成长值开始时间
            int nNext = 0; //每日成长值结束时间
            int valueNext = 0;//每日成长值
            int value2Sum = 0; //任务成长值累计值
            int value1Sum = 0; //每日成长值累计值
            int count = 0; //统计每日成长值的数据有多少条
            int sum = 0; //总成长值

            for (int i = 0; i < strArr.length; i++) {
                String[] strArr1 = strArr[i].split(" ");

                //test
                for (int j = 0; j < strArr1.length; j++) {
                    System.out.println(strArr1[j]);
                }
                //


                if (Integer.parseInt(strArr1[0]) == 2) {
                    value2Sum = value2Sum + Integer.parseInt(strArr1[2]);
                }


                if (count != 0) {
                    if (Integer.parseInt(strArr1[0]) == 1) {
                        mNext = Integer.parseInt(strArr1[1]);
                        nNext = Integer.parseInt(strArr1[2]);
                        valueNext = Integer.parseInt(strArr1[3]);
                        value1Sum = value1Sum + valueNext * (nNext - mNext + 1);
                        if (valueNext >= valueLast && nLast >= mNext) {
                            value1Sum = value1Sum - (Math.abs(nLast - mNext) + 1) * valueLast;
                        }
                        if (valueNext < valueLast && nLast >= mNext) {
                            value1Sum = value1Sum - (Math.abs(nLast - mNext) + 1) * valueNext;
                        }
                        valueLast = valueNext;
                        nLast = nNext;
                        count++;
                    }

                }

                if (count == 0) {
                    if (Integer.parseInt(strArr1[0]) == 1) {
                        mLast = Integer.parseInt(strArr1[1]);
                        nLast = Integer.parseInt(strArr1[2]);
                        valueLast = Integer.parseInt(strArr1[3]);
                        value1Sum = valueLast * (nLast - mLast + 1);
                    }
                    count++;
                }
            }

            sum = value1Sum + value2Sum;
            System.out.println(sum);

        }
        in.close();
    }
}

-------------------------------------------

答案仅供参考