[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"); }