POJ_2181,贪心问题,代码有所参考
题目思路:在数组首位插入0,然后从前往后搜,交替执行:
(1)找一个比相邻两个数都大或等于的数,+;
(2)找一个比相邻两个数都小或等于的数,-;
#include <cstdio>
int potions[150001];
int main(){
int num;
scanf("%d",&num);
potions[0]=0;
potions[num]=0;
for(int i=1;i<=num;i++)
scanf("%d",&potions[i]);
bool isadd=1;
int sum=0;
for(int i=1;i<=num;i++){
if(isadd){
if(potions[i]>=potions[i-1] && potions[i]>=potions[i+1]){
sum+=potions[i];
isadd=0;
}
}
else{
if(potions[i]<=potions[i-1] && potions[i]<=potions[i+1]){
sum-=potions[i];
isadd=1;
}
}
}
printf("%d",sum);
return 0;
}