题意:给你n个数,找一些数(可以不连续,但顺序不可乱),奇数位置的数+,偶数位置的数-。最后得出的最大结果是?
从前往后搜,交替执行:
(1)找一个比相邻两个数都大的数,+;
(2)找一个比相邻两个数都小的数,-;
#include<stdio.h>
#include<string.h>
int a[150005];
int main()
{
int n,m,i,j,sum,flag;
scanf("%d",&n);
while(n--)
{
memset(a,0,sizeof(a));
sum=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
scanf("%d",&a[i]);
flag=1;
for(i=1;i<=m;i++)
{
if(flag)
{
if(a[i]>=a[i-1]&&a[i]>=a[i+1])
{sum+=a[i];flag=0;}
}
else
{
if(a[i]<=a[i-1]&&a[i]<=a[i+1])
{
sum-=a[i];
flag=1;
}
}
}
printf("%d\n",sum);
}
return 0;
}