hdu 1231 dp 最大连续子序列

来源:互联网 发布:java缺少返回语句 编辑:程序博客网 时间:2024/04/29 07:36

题目大意: 题目很像hdu 1003那题,只不过改了一些输出方式,并且在输出的地方有了一些特殊的要求。需要额外注意一下。

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int a[10005];int main(){int k,count;while(~(scanf("%d",&k))){if(k==0)  break;  count=0;for(int i=0;i<k;i++){scanf("%d",&a[i]);if(a[i]>=0)  count=1;}int l=0,max=-1001,la,lb,r,t;t=la=r=0;for(int i=0;i<k;i++){l=l+a[i];        if(l>max){max=l;la=t;r=i;//printf("****%d %d\n",la,r);}if(l<0){l=0;t=i+1;}}if(max<=0&&count==0)printf("0 %d %d\n",a[0],a[k-1]);else printf("%d %d %d\n",max,a[la],a[r]);}return 0;}

若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。 


0 0