阿里測評題


題目:

  現在很多家長都會送小孩子去培訓中心學習舞蹈,有一次舞蹈培訓中心考試,因為小孩子要哄着才能更喜歡學,所以老師給孩子們准備了小貼紙獎勵孩子,考試結束以后孩子們按照大小個站成一排,老師按照順序給孩子們發小貼紙,每個孩子都會至少得到一個小貼紙,因為是按照大小個站成一排的,所以相鄰的孩子成績略有高低,為了鼓勵相鄰孩子向成績好的孩子學習,成績高的孩子會比成績弱的孩子得到的小貼紙多,請問需要多少小貼紙發給孩子們?

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();//讀入一行string
        String[] c = s.split(",");//根據“,”進行分割
        int[] arr = new int[c.length];
        for (int i = 0; i < c.length; i++) {
            arr[i] = Integer.parseInt(c[i]);//將string轉為int型
        }

        int [] paper=new int[arr.length];//定義分配貼紙的數組

        Arrays.fill(paper,1);//初始化為1

        for(int i=0;i<arr.length;i++){

            //前一個比當前的小,當前加1
            if(i!=0){
                if(arr[i]>arr[i-1])
                    paper[i]=paper[i-1]+1;
                else if(arr[i]==arr[i-1])
                    paper[i]=paper[i-1];
            }

            //一個往前比,一個往后比,這個難想

            //后一個比當前的小,當前加1
            if(i!=arr.length-1&&arr[i]>arr[i+1]){
                paper[i]=paper[i+1]+1;
                //加1后,如果前一個和當前相等,則前一個繼續加1,向前遍歷
                for(int j=i;paper[j-1]==paper[j];j--){
                    paper[j-1]=paper[j]+1;
                }
            }

        }

        //輸出總數
        int sum=0;

        for(int i=0;i<arr.length;i++){
            sum+=paper[i];
            System.out.println(paper[i]);
        }

        System.out.println(sum);

    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM