题目描述
给出一个长度为 �n 的序列 �a,选出其中连续且非空的一段使得这段和最大。
输入格式
第一行是一个整数,表示序列的长度 �n。
第二行有 �n 个整数,第 �i 个整数表示序列的第 �i 个数字 ��ai。
输出格式
输出一行一个整数表示答案。
#include<stdio.h>
int a[200002];
int sum;
int main()
{
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
scanf("%ld",&a[i]);
int maxi = a[1];
sum = a[1];
if(n == 1)
{
printf("%d",sum);
return 0;
}
for(int i = 2;i <= n;i++)
{
sum += a[i];
if(maxi < sum)
maxi = sum;
else if(sum < 0)
sum = 0;
}
printf("%d",maxi);
return 0;
}