题目描述
一个大小为n的数组a1到an(−10^4≤ai≤10^4)。请你找出一个连续子段,使子段长度为奇数,且子段和最大。
输入
第一行为T(1≤T≤5),代表数据组数。
之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。
之后一行n个数,代表a1到an。
输出
每组数据输出一行,表示满足要求的子段和最大值
样例输入
141 2 3 4
样例输出
9
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int x[100009];
int main()
{
int i,t=0,T;
int n,sum,ans;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&x[i]);
sum=ans=x[1];
x[n+1]=0;
for(i=2;i<n;i++)
{
sum+=x[i]+x[i+1];
if(sum<x[i+1])
{
sum=x[i+1];
}
i++;
ans=max(sum,ans);
}
sum=x[2];
for(i=3;i<n;i++)
{
sum+=x[i]+x[i+1];
if(sum<x[i+1])
{
sum=x[i+1];
}
i++;
ans=max(sum,ans);
}
printf("%d\n",ans);
}
return 0;
}