用数组 b[] 来将数组a[]转化,即为求最大子列的问题。
# include<stdio.h>
int a[100010];
int b[100010];
int main(){
int num,n;
int i,temp,maxx;
scanf("%d",&num);
while(num--){
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
b[i]=a[i-1]-a[i];
temp=maxx=0;
for(i=1;i<n;i++){
temp+=b[i];
if(maxx < temp) maxx=temp;
else if(temp<0) temp=0;
}
printf("%d\n",maxx);
}
}