最大子数组的和与积

Posted 指尖起舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大子数组的和与积相关的知识,希望对你有一定的参考价值。

最大子数组的和

double get_max_sum(double a[], int length)
{
    double cursum = a[length - 1];
    double maxsum = a[length - 1];
    int curi = length - 2;
    while (curi >= 0)
    {
        cursum = max(a[curi], a[curi] + cursum);
        maxsum = max(cursum, maxsum);
        -- curi;
    }
    return maxsum;
}

 

最大子数组的积

double get_max_pro(double a[], int length)
{
    double minEnd = a[length - 1];
    double maxEnd = a[length - 1];
    double maxresult = a[length - 1];
    int curi = length - 2;
    while (curi >= 0)
    {
        double end1 = a[curi] * maxEnd;
        double end2 = a[curi] * minEnd;
        minEnd = min(a[curi], min(end1, end2));
        maxEnd = max(a[curi], max(end1, end2));
        -- curi;
    }
    return maxEnd;
}

测试

#include <iostream>

using namespace std;

int main()
{
    double is[] = {-2, 5, 3, -6, 4, -8, 6};
    double ds[] = {-2, 5, 3, -6, 4, -8, 6};
    cout << get_max_sum(is, 7) << endl;
    cout << get_max_pro(ds, 7) << endl;
    return 0;
}

 

以上是关于最大子数组的和与积的主要内容,如果未能解决你的问题,请参考以下文章

实现两个指数递减多项式的和与积

最大子数组的和

一个关于1到100之间和与积的数学题

最大子序和

最大连续子数组和与JUnit测试

返回一个二维整数数组中最大子数组的和