1266: 最大子段和

来源:互联网 发布:手机淘宝标题优化技巧 编辑:程序博客网 时间:2024/05/17 03:46

题目描述

一个大小为n的数组a1到an(−10^4≤ai≤10^4)。请你找出一个连续子段,使子段长度为奇数,且子段和最大。

输入

第一行为T(1≤T≤5),代表数据组数。
之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。
之后一行n个数,代表a1到an。

输出

每组数据输出一行,表示满足要求的子段和最大值
样例输入

1
4
1 2 3 4
样例输出

9

#include<cstdio>int a[100000+10];int av[100000+10];int main(){    int t;    scanf("%d",&t);    while(t--){        int n;        scanf("%d",&n);        for(int i=1;i<=n;i++){            scanf("%d",&a[i]);            av[i]=a[i];        }        int maxn=a[1];        for(int i=n;i>=1;i--){            if(i+2<=n){                if(av[i]+a[i+1]+av[i+2]>av[i]) av[i]=av[i]+a[i+1]+av[i+2];            }            if(av[i]>maxn) maxn=av[i];        }        printf("%d\n",maxn);    }    return 0;} 

河工大校赛题目,代码转自队友男神鑫。

0 0
原创粉丝点击