hdu1003 Max Sum(最大子序列和) —— dp

来源:互联网 发布:给淘宝店铺起名字 编辑:程序博客网 时间:2024/05/10 08:08

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003


代码如下:

#include<stdio.h>//hdu1003int a[100005], dp[100005];int main(){    int T,n,max,s,e,ms,me;    scanf("%d",&T);    for(int k = 1; k<=T; k++)    {        scanf("%d",&n);        for(int i = 0; i<n; i++)            scanf("%d",&a[i]);        max = dp[0] = a[0], ms = me = s = e = 0;        for(int i = 1; i<n; i++)        {            if(dp[i-1]>=0)            {                dp[i] = dp[i-1] + a[i];                e = i;            }            else            {                dp[i] = a[i];                s = e = i;            }            if(dp[i]>max)            {                max = dp[i];                ms = s, me = e;            }        }        printf("Case %d:\n%d %d %d\n",k,max,ms+1,me+1);    }    return 0;}


0 0