N个整数组成的序列a[1],a[2],a[3],…,a[n],
求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。
例如:-2,11,-4,13,-5,-2,
和最大的子段为:11,-4,13。
和为20。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{ long long j,sum,a,n,max;
cin>>n;
for(sum=0,max=-1e9,j=0;j<n;j++)
{
cin>>a;
sum+=a;
if(max<sum)
{
max=sum;
}
if(sum<0)
{
sum=0;
}
}
cout<<max<<endl;
return 0;
}
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{ long long j,sum,a,n,max;
cin>>n;
for(sum=0,max=-1e9,j=0;j<n;j++)
{
cin>>a;
sum+=a;
if(max<sum)
{
max=sum;
}
if(sum<0)
{
sum=0;
}
}
cout<<max<<endl;
return 0;
}