超时的
#include<stdio.h>
const int MAXN=50005;
int a[MAXN];
int main()
{
int n;
while(scanf("%d",&n))
{
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
long long Max=-1,sum=0;
for(int i=1;i<=n;i++)
{
if(sum>=0)
{
sum+=a[i];
}
else sum=a[i];
if(sum>Max)
{
Max=sum;
}
}
printf("%lld",Max);
printf("\n");
}
}
通过的
#include<stdio.h>
int a[50005];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
long long Max=0,sum=0;
for(int i=0;i<n;i++)
{
sum+=a[i];
if(sum<0)sum=0;
Max=Max>sum?Max:sum;
}
printf("%lld\n",Max);
}