最少应该准备多少奖品

版权声明:本文为博主原创,未经允许请不要转载哦 https://blog.csdn.net/weixin_43277507/article/details/88597532

n n 个人参加编程比赛,比赛结束后每个人都得到一个分数;现在所有人排成一圈(第1个和第 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;
	 }
}

猜你喜欢

转载自blog.csdn.net/weixin_43277507/article/details/88597532