HDOJ1003

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDOJ1003相关的知识,希望对你有一定的参考价值。

MAX —sum  好久前做过 但是再看到的时候觉得的有点陌生

设Si是一定以i结尾的最大连续子序列

S1=a[1];

Sn=Sn-1>=0?Sn-1+a[n]:a[n];//状态转移大致是这样 则S1 —Sn中必有所求子序列 边存边比较 答案就出来了

#include<stdio.h>
int main()
{
    int a,P,n,start,temp,max,end,sum,mark=0;
    scanf("%d",&P);
        while(P--)
        {
            max=-1000,temp=1,sum =0;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&a);    
                sum+=a;
                if(sum>max)
                {
                    max=sum;
                    start=temp;
                    end=i;
                }
                if(sum<0)
                {
                    sum=0;
                    temp=i+1;
                }
            }
            printf("Case %d:\n%d %d %d\n",++mark,max,start,end);
            if(P!=0){
                printf("\n");
            }
        }
    return 0;
} 

 

以上是关于HDOJ1003的主要内容,如果未能解决你的问题,请参考以下文章

HDOJ 1003

HDOJ:1003

Hdoj 1003

Hdoj 1003.Max Sum 题解

[HDOJ 1003]动态规划法求和最大的连续子序列

hdoj薛猫猫杯程序设计网络赛1003 球球大作战