您的位置:首页 > 其它

hdu1003 最大连续子序列和

2014-12-03 18:35 274 查看
简单的动规问题,题目的大概意思就是给一个数组,求这个数组子序列的最大值

这个题目其实不需要建立数组,设一个变量sum来存储它的值,当这个sum值小于0的时候就把它置零

然后再用两个变量来保存开始和结束的子序列的下标

当开始做的时候我还使用了二维数组的做法,使用了三层for循环,结果可想而知,超时

后来用这个方法提交的时候,好几次都是格式错误,比较坑了

输入

1

5 6 -1 5 4 -7

输出

15

#include<stdio.h>
int main()
{
int n,m,a,x1,x2,x,m1,sum;
scanf("%d",&n);
m1=1;
while(n--)
{
sum=0;
x1=x2=x=1;
scanf("%d",&m);
int max=-9999;
for(int i=0;i<m;i++)
{
scanf("%d",&a);
sum+=a;
if(sum>max)
{
max=sum;
x1=x;
x2=i+1;
}
if(sum<0)
{
sum=0;
x=i+2;
}

}
if(m1!=1)
printf("\n");
printf("Case %d:\n%d %d %d\n",m1,max,x1,x2);
m1++;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: