您的位置:首页 > 其它

HDU-1231 最大连续子序列

2011-09-14 22:54 218 查看
/*
* HDU-1231 最大连续子序列
* mike-w
* 2011-9-14
* -----------------------------------------
* 最大连续子段和 => 经典问题
* -----------------------------------------
* 此题可以不设数组,优化空间
* 不过处理起来不是很简单,所以为了避免错误
* 我牺牲一点空间。
*/
#include<stdio.h>
#include<stdlib.h>
#define SIZE 11111

int main(void)
{
int s[SIZE];
int k,sum,max,start,end;
int i,t1,t2;

#ifndef ONLINE_JUDGE
freopen("1231.in","r",stdin);
#endif

while(scanf("%d",&k),k)
{
for(i=0;i<k;i++)
scanf("%d",s+i);
max=-1;
for(sum=i=t1=t2=0;i<k;i++)
{
if(sum<0)
sum=s[i],t1=i;
else
sum+=s[i];
if(sum>max)
max=sum,t2=i,start=t1,end=t2;
}
if(max<0)
printf("%d %d %d\n",0,s[0],s[k-1]);
else
printf("%d %d %d\n",max,s[start],s[end]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  优化