阿里测评题

题目:

  现在很多家长都会送小孩子去培训中心学习舞蹈,有一次舞蹈培训中心考试,因为小孩子要哄着才能更喜欢学,所以老师给孩子们准备了小贴纸奖励孩子,考试结束以后孩子们按照大小个站成一排,老师按照顺序给孩子们发小贴纸,每个孩子都会至少得到一个小贴纸,因为是按照大小个站成一排的,所以相邻的孩子成绩略有高低,为了鼓励相邻孩子向成绩好的孩子学习,成绩高的孩子会比成绩弱的孩子得到的小贴纸多,请问需要多少小贴纸发给孩子们?

Copy
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);
}
}
posted @   编程迷悟  阅读(740)  评论(0)    收藏  举报
编辑推荐:
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
阅读排行:
· 一天 Star 破万的开源项目「GitHub 热点速览」
· 别再堆文档了,大模型时代知识库应该这样建
· 瞧瞧别人家的日期处理,那叫一个优雅!
· C#/.NET/.NET Core技术前沿周刊 | 第 35 期(2025年4.14-4.20)
· 在Avalonia/C#中使用依赖注入过程记录
点击右上角即可分享
微信分享提示