OFFER prove safety and maximum continuous array

OFFER prove safety and maximum continuous array

The classic dynamic programming problem

The idea is that all calculated and are, of course, can not be added directly brute, a calculated result of the acceleration to be utilized on the second operation

class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
    int size = array.size();
    int max = INT_MIN;
    //dp 数组初始化,dp[i][j]表示从i到j的和,例如dp[0][1]表示array[0]+array[1]
    vector<vector<int> > dp(size,vector<int>(size));
    dp[0][0] = array[0];
    
    for(int i=0;i<size;i++)
    {
        for(int j=1;j<size;j++)
        {
            if(i>j) continue;//确保i在j的前面
            dp[i][j] = dp[i][j-1] + array[j];
            if(dp[i][j] > max)
            {
                max = dp[i][j];
            }
        }
    }

    return max;

};

Guess you like

Origin www.cnblogs.com/virgildevil/p/12210100.html