题意:求出一个序列中连续某一段的和的最大值,并求出是从什么地方开始到什么地方结束
链接:HDU 1003传送门
想法:用一个变量来保存一段和,用max_sum来保存到目前为止连续区间的和的最大值,temp和last用来保存连续和最大值的两个边界,如果sum值小于0,那就让sum=0。并改变temp
关键代码:
int temp=1;
int n;
cin>>n;
int sum,max_sum;
sum=0;
max_sum=-1001;
for(int i=1;i<=n;i++)
{
cin>>x;
sum+=x;
if(sum>=max_sum)
{
max_sum=sum;
first=temp;
last=i;
}
if(sum<0)
{
sum=0;
temp=i+1;
}
}