[HDU]1231最大连续子序列

http://acm.hdu.edu.cn/showproblem.php?pid=1231

跟Max Sum这题几乎一模一样,就是一个输出位置,一个输出位置的数值。 (http://www.cnblogs.com/sjy123/p/3239193.html)

 

#include"stdio.h"
#include"stdlib.h"
int main()
{
    int t,n,i,news,old,begin,end,sum,x,tou,wei;   
    while(scanf("%d",&n)&&n)
    {
         for(i=1;i<=n;i++)
         {
             scanf("%d",&news);
             if(i==1)
             {
                 sum=old=news;
                 begin=news;         //begin为起始位置 
                 end=news;           //同理,末位置 
                 x=news;             //记录某段的起始位置 
                 tou=news;
             }
             else if(i==n)
             wei=news;
             else 
             {
                  if(news>news+old)    //这里存在两种情况:1.news为负,old为负;2.news为正,old为负                    
                  {                    //很明显,这种情况下,以这个new为起点,继续计算 
                      old=news;
                      x=old;             //记录这段的起始位置 
                  }
                  else 
                       old+=news;  
                  if(old>sum)
                  { 
                     sum=old;
                     begin=x;
                     end=news;
                  }    
             }
         } 
         if(sum<0)
         {
              sum=0;
              begin=tou;
              end=wei;
         }        
         printf("%d %d %d\n",sum,begin,end);
    }
    //system("pause");
}

 

posted @ 2013-08-09 17:26  天际。  阅读(695)  评论(0编辑  收藏  举报