我一开始的思路:从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]); }