HD-ACM算法专攻系列(22)——Max Sum

Posted forcheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HD-ACM算法专攻系列(22)——Max Sum相关的知识,希望对你有一定的参考价值。

问题描述:

 


AC源码:

 此题考察动态规划,解题思路:遍历(但有技巧),在于当前i各之和为负数时,直接选择以第i+1个为开头,在于当前i各之和为正数时,第i个可以不用作为开头(因为前i+1个之和一定大于第i+1个的值)

#include"iostream"
using namespace std;

int main()
{
    int t, n, start, end, sum, max, tmp;
    int a[100000];
    scanf("%d", &t);
    for(int i = 1; i <= t; i++)
    {
        if(i > 1)printf("\\n");
        scanf("%d", &n);
        
        scanf("%d", a);
        max = a[0];
        start = end = 0;
        for(int j = 1; j < n; j++)
        {
            scanf("%d", a+j);
            if(a[j] > max)
            {
                max = a[j];
                start = end = j;
            }
        }
        
        for(int j = 0; j < n; j++)
        {
            if(a[j] >= 0)
            {
                sum = 0;
                tmp = j;
                for(int k = j; k < n; k++)
                {
                    sum += a[k];
                    if(sum > max)
                    {
                        max = sum;
                        start = tmp;
                        end = k;
                    }
                    if(sum >= 0)
                    {
                        j = k + 1;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        
        printf("Case %d:\\n", i);
        printf("%d %d %d\\n", max, start+1, end + 1);
        
    }
    return 0;
}

  

以上是关于HD-ACM算法专攻系列(22)——Max Sum的主要内容,如果未能解决你的问题,请参考以下文章

HD-ACM算法专攻系列(19)——七夕节

HD-ACM算法专攻系列(20)——七夕节

HD-ACM算法专攻系列(18)——Largest prime factor

HD-ACM算法专攻系列(17)——考试排名

HD-ACM算法专攻系列(11)——Exponentiation

HD-ACM算法专攻系列(16)——考试排名