zoukankan      html  css  js  c++  java
  • POJ 2479 Maximum sum(两段连续和最大)

    题意:

    给定n个数,选出连续的2段,使得2段之和的总和最大。

    思路:

    1. 连续最大子段和已经是非常经典的问题了,可以用线性的算法来求出来。

    2. 对于2段连续最大和,可否采取分治的策略?

       对于分界点i,前i个数的最大连续和,和后面的n-i个的最大连续和相加即使要求的结果了。

       后面的n-i个最大连续和要倒着推导过来。

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <climits>
    
    const int MAXN = 50010;
    int an[MAXN];
    int d1[MAXN], d2[MAXN];
    
    int main()
    {
        int cases;
        scanf("%d", &cases);
        while (cases--)
        {
            int n;
            scanf("%d", &n);
    
            for (int i = 1; i <= n; ++i)
                scanf("%d", &an[i]);
    
            int tmax = INT_MIN, temp = 0;
            for (int i = 1; i <= n; ++i)
            {
                temp += an[i];
                if (tmax < temp)
                    tmax = temp;
                if (temp < 0)
                    temp = 0;
                d1[i] = tmax;
            }
            tmax = INT_MIN, temp = 0;
            for (int i = n; i >= 1; --i)
            {
                temp += an[i];
                if (tmax < temp)
                    tmax = temp;
                if (temp < 0)
                    temp = 0;
                d2[i] = tmax;
            }
    
            int ans = INT_MIN;
            for (int i = 1; i < n; ++i)
                if (ans < d1[i] + d2[i+1])
                    ans = d1[i] + d2[i+1];
    
            printf("%d\n", ans);
        }
        return 0;
    }
    -------------------------------------------------------

    kedebug

    Department of Computer Science and Engineering,

    Shanghai Jiao Tong University

    E-mail: kedebug0@gmail.com

    GitHub: http://github.com/kedebug

    -------------------------------------------------------

  • 相关阅读:
    OC2_数组操作
    OC1_数组创建
    OC6_字符串练习
    Python3学习笔记12-定义函数及调用
    Python3学习笔记11-循环语句
    Python3学习笔记10-条件控制
    Python3学习笔记09-字典
    Python3学习笔记08-tuple
    Python3学习笔记07-List
    Python3学习笔记05-数字
  • 原文地址:https://www.cnblogs.com/kedebug/p/2803985.html
Copyright © 2011-2022 走看看