最少应该准备多少奖品

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;
	 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值