码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1231(最大连续子序列和)

时间:2017-08-14 21:33:14      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:最大   int   否则   for   iostream   max   turn   最大连续子序列   amp   

这个还是比较简单的,没什么可说的,就是尾巴往下滑动,如果区间内的sum小于0,就重新取区间

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=10000+10;
int a[maxn];
int n;
int main()
{
   while(~scanf("%d",&n)&&n)
   {
        for(int i=1;i<=n;i++)
          scanf("%d",&a[i]);
      int s,d,sum,ans,st,ed;
       s=d=sum=ans=st=ed=a[1];
       for(int i=2;i<=n;i++)
       {
           if(sum>0)//只要能为后面值的增大添一份力,即为正数,就需要,否则就扔掉
           {
               sum+=a[i];
               d=a[i];
           }
           else
           {
               s=d=sum=a[i];
           }
           if(sum>ans)
           {
               ans=sum;
               st=s;
               ed=d;
           }
       }
       if(ans<0) printf("0 %d %d\n",a[1],a[n]);
       else printf("%d %d %d\n",ans,st,ed);
   }
    return 0;
}

 

hdu 1231(最大连续子序列和)

标签:最大   int   否则   for   iostream   max   turn   最大连续子序列   amp   

原文地址:http://www.cnblogs.com/Wangwanxiang/p/7359937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!