美文网首页
1007 Maximum Subsequence Sum

1007 Maximum Subsequence Sum

作者: xiaowentao | 来源:发表于2019-06-05 15:51 被阅读0次
#include<cstdio>
const int maxn = 10000;
int a[maxn];
int dp[maxn];

int s[maxn] = {0};


int main()
{
    int n;
    scanf("%d",&n);
    bool flag = false;

    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]>=0) flag = true;
    }

    if(flag == false)
    {
        printf("0 %d %d\n",a[0],a[n-1]);
        return 0;
    }
    dp[0] = a[0];

    for(int i=1;i<n;i++)
    {
        if(dp[i-1]+a[i]>a[i])//状态转移方程  dp[i] = max{a[i],dp[i-1]+a[i]}
        {
            dp[i] = dp[i-1] + a[i];
            s[i] = s[i-1];
        }else{
            dp[i] = a[i];
            s[i] = i;
        }
    }
    int k=0;//最大值的下表
    for(int i=1;i<n;i++)
        {
            if(dp[i]>dp[k]) k = i;
        }
    printf("%d %d %d\n",dp[k],a[s[k]],a[k]);
    return 0;
}

相关文章

网友评论

      本文标题:1007 Maximum Subsequence Sum

      本文链接:https://www.haomeiwen.com/subject/vuhsxctx.html