【问题标题】:Find sum of largest subset of array查找数组的最大子集的总和
【发布时间】:2017-08-22 11:34:27
【问题描述】:

我正在解决一个 CS 问题,即我们给定一个大小为 N 的数组,使得 N

这是一个例子: N=5, array={12, -4, -10, 4, 9}, answer = 13,因为 4+9 是我们能得到的最好的。

我知道这可以在二次时间内通过蛮力解决,但我想知道这是否可以在对数时间内以线性方式解决。

提前致谢。

【问题讨论】:

    标签: arrays dynamic-programming


    【解决方案1】:

    根据this 的介绍,Kadane 的算法显然会产生线性运行时界限;从那里获取的 C++ 实现如下所示。

    int maxSubArraySum(int a[], int size)
    {
        int max_so_far = INT_MIN, max_ending_here = 0;
    
        for (int i = 0; i < size; i++)
        {
            max_ending_here = max_ending_here + a[i];
            if (max_so_far < max_ending_here)
                max_so_far = max_ending_here;
    
            if (max_ending_here < 0)
                max_ending_here = 0;
        }
        return max_so_far;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2015-07-27
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      相关资源
      最近更新 更多