有
n
n
n个人参加编程比赛,比赛结束后每个人都得到一个分数;现在所有人排成一圈(第1个和第
n
n
n个相邻)领取奖品,要求:
1、如果某个人的分数比左右的人高,那么奖品数量也要比左右的人多;
2、每个人至少得到一个奖品;
问最少准备多少个奖品。
public class Solution {
public static void main(String[] args) {
int Y = 2;
int M1len = 2;
int[] M1 = {1,2};
System.out.println(minNumCore(M1len,M1));
}
public static int minNumCore(int Mlen,int[] M) {
int result = 0;
int len = M.length;
int[] Mcount = new int[len];
for(int i=0;i<len;i++) {
Mcount[i]=1;
}
if(len>2) {
for(int i=1;i<len-1;i++) {
if(M[i]>M[i-1]) {
Mcount[i]=Mcount[i-1]+1;
}
if(M[i]>M[i+1]) {
Mcount[i]=Mcount[i+1]+1;
}
}
if(M[0]>M[1]) {Mcount[0]=Mcount[1]+1;}
if(M[0]>M[len-1]) {Mcount[0]=Mcount[len-1]+1;}
if(M[len-1]>M[0]) {Mcount[len-1]=Mcount[0]+1;}
if(M[len-1]>M[len-2]) {Mcount[len-1]=Mcount[len-2]+1;}
}
else if(len==2){
if(M[0]>M[1]) {
Mcount[0]=Mcount[1]+1;
}
else if(M[0]<M[1]) {
Mcount[1]=Mcount[0]+1;
}
}
else if(len==1) {
Mcount[0]=1;
}
for(int i=0;i<len;i++) {
result +=Mcount[i];
}
return result;
}
}