pat 1007

来源:互联网 发布:torch python 编辑:程序博客网 时间:2024/06/05 09:05

题意:求最大子串和

思路:一边扫一边加过去,变负了了就清零,不停取max就好了

代码:

#include<cstdio>
#include<cstring>


int a[10005];


int main()
{
int ans=-1000000005,i,n,sum=0;
int l=0,r=0,ml=0,mr=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);


for(i=0;i<n;i++)
{
sum+=a[i];
if(i==0) l=a[i];
r=a[i];
if(sum>ans)
{
ans=sum;
ml=l;
mr=r;
}
if(sum<0)
{
sum=0;
if(i+1<n)
l=a[i+1];
}
}
if(ans<0)
{
ans=0;
ml=a[0];
mr=a[n-1];
}
printf("%d %d %d\n",ans,ml,mr);
return 0;
}

0 0