美文网首页
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