最大子段和

Description

给出n个整数序列(可能为负数)组成的序列a1a2, ..., an,求该序列形如的子段和的最大值。当所有整数均为负数时,定义最大子段和为0。

Input

多测试用例。每个测试用例占2行:

第一行是序列的个数n(0 < n ≤ 10000),第二行是n个整数。

Output

为每个测试用例输出一行结果:最大子段和。

Sample Input

6
-2 11 -4 13 -5 -2
3
1 2 3

Sample Output

20
6

AC代码:
#include<stdio.h>
int a[10001],b[10001];
int main( )
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int maxx=-1;
        for(int i=1 ; i<=n ; i++)
        scanf("%d",&a[i]);
        for(int i=1 ; i<=n ; i++)
        {
            if(b[i-1]>0)
                b[i]=b[i-1]+a[i];
            else
                b[i]=a[i];
            if(b[i]>maxx)
                maxx=b[i];
        }
        printf("%d\n",maxx);
    }
}
View Code

 

posted @ 2018-05-15 21:37  shuai_hui  阅读(179)  评论(0编辑  收藏  举报