
我一开始的思路:从1开始遍历,比如样例中,4>0那么开始往她后面寻找不等于0的道路一起-1,计为一次cnt+1
#include<stdio.h>
int main(){
int n;
int str[10008];
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&str[i]);
}
int cnt=0;
for(int i=0;i<n;i++){
while(str[i]!=0){
for(int j=i;j<n;j++){
if(str[j]==0) break;
str[j]-=1;
}
cnt++;
}
}
printf("%d",cnt);
}
但是时间超限了
于是就有了第二个思路:
#include<stdio.h>
#define ll long long
int str[100008];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&str[i]);
}
ll cnt=0;
for(int i=1;i<n;i++){
if(str[i]>str[i-1]){
cnt+=str[i]-str[i-1];
}
}
printf("%lld",cnt+str[0]);
}