分配糖果问题
题目详情:
有n个小朋友站成一排(编号从0到n-1),每个小朋友有一个rating值,存放在ratings数组中。老师需要给他们分配糖果,每个小朋友至少需要一颗糖果,对于任意相邻的两个小朋友i和i+1,rating值大的必须比rating值小的分配的糖果多(rating相同的没必要分配一样多的糖果)。
请计算最少需要多少颗糖果,才能完成上述分配。
输入格式:
多组数据,每组数据第一行是一个正整数n。
接下来n行,每行有1个正整数,表示每个小朋友的rating值。所有整数都不超过100000。
输出格式:
每组数据一行,包括一个正整数,表示做少需要的糖果数。
答题说明:
输入样例
3
1
2
2
输出样例:
4
我的代码:
#include <iostream>
#include <string>
using namespace std;
int main (){
int ratings[100]={0};
int result[100]={0};
int rating;
cin>>rating;
for(int i=0;i<rating;i++){
cin>>ratings[i];
}
result[0]=1;
for(int i=0;i<rating;i++){
if(ratings[i+1]>ratings[i])
result[i+1]=result[i]+1;
else
result[i+1]=1;
}
for(int i=rating-1;i>=0;i--){
if((ratings[i-1]>ratings[i])&&(result[i-1]==result[i]))
result[i-1]=result[i]+1;
}
int results=0;
for(int i=0;i<rating;i++){
results+=result[i];
}
cout<<results<<endl;
return 0;
}
我验证了几种情况,都没有问题,能正确输出,但是提交后说是有问题,麻烦各位大神看看我哪里没有弄好。