hdoj1231(最大连续子序列)

    技术2026-04-03  2

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

    简单的最大子段和问题,只是加上了求子段的起点和终点

     

     

    #include<stdio.h> int num[10005]; int main() {     int n;     while(scanf("%d",&n))     {        if(n==0) break;        int flag=0;        for(int i=0;i<n;i++)        { scanf("%d",&num[i]);          if(num[i]>=0) flag=1;        }        int sum1=-99999,b=0,c=0;        for(int i=0;i<n;i++)        {            if(b>0) b+=num[i];            else b=num[i];            if(b>sum1) {sum1=b;c=i;}//C用来保存终点        }        int sum2=0,d;        for(int i=c;i>=0;i--)//有终点向前找起点        {            sum2+=num[i];            if(sum2==sum1) d=i;        }        if(!flag) printf("0 %d %d/n",num[0],num[n-1]);        else printf("%d %d %d/n",sum1,num[d],num[c]);     }     return 0; }

    最新回复(0)