最大子列和1
#include<stdio.h>
int main()
{
int n,a,i;
int sum,maxsum;
sum=maxsum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
sum+=a;
if(sum>maxsum)
maxsum=sum;
if(sum<0)
sum=0;
}
printf("%d\n",maxsum);
}
最大子列和2
#include<stdio.h>
int main()
{
int n,a[100010],i=0,j=0,k=0;
int sum,maxsum;
sum=0;
maxsum=-1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
if(sum>maxsum)
{
maxsum=sum;
k=i;
}
if(sum<0)
sum=0;
}
for(sum=0,i=k;i>=1;i--)
{
sum+=a[i];
if(sum==maxsum)
j=i;
}
if(k==0)
printf("%d %d %d\n",0,a[1],a[n]);
else
printf("%d %d %d\n",maxsum,a[j],a[k]);
}