连续子数组的最大和

Posted Lune-Qiu

tags:

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

数组

最基础做法:

    int FindGreatestSumOfSubArray(vector<int> array) {
        int len = array.size();
        int dp[400][400] = {0};
        int res = -214748;
        for(int i = 1; i < len;i++)
        {
            dp[i][i] = array[i-1];
            if(dp[i][i] > res)
                res = dp[i][i];
        }
        for(int i = 1; i <= len;i++)
        {
            for(int j = i+1; j <= len;j++)
            {
                dp[i][j] = dp[i][j-1] + array[j-1];
                if(dp[i][j] > res)
                    res = dp[i][j];
            }
        }
        return res;
    }

动态规划想法:

    int FindGreatestSumOfSubArray(vector<int> array) {
        int len = array.size();
        int dp[400] = {0};
        int res = array[0];
        for(int i = 1; i <= len;i++)
        {
            dp[i] = dp[i-1]+array[i-1] > array[i-1] ? dp[i-1]+array[i-1]:array[i-1];
            if(res < dp[i])
                res = dp[i];
        }
        return res;
    }

1.dp方程:dp[i] 为以i为结尾的数组最大值。

2.转换方程  : 我们只需要保证以i为结尾的最大值,比较第i-1个值+当前值,与当前值,选取大的。

      可以通俗的理解成,前面已经是负的了,重新设一个新的起点。

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

写写代码系列013:剑指offer题目——连续子数组的最大和(动态规划)

最大子阵列/连续数组的最大和

连续子数组的最大和Java实现

连续子数组最大和

连续子数组最大和

CSDN|每日一练连续子数组的最大和