[leetcode]Maximum Subarray

经典的最大子段和

状态表示f[i]表示以A[i]结尾的最大子段和是多少.

可想而知,如果f[i-1] > 0

那么是对第i位是有贡献的。

f[i]  = f[i-1] + A[i]

不然...f[i]= A[i]

class Solution {
public:
    int maxSubArray(int A[], int n) {
        vector<int> f(n , 0);
        f[0] = A[0];
        
        int ans = f[0];
        for(int i = 1 ; i < n ; i++){
            if(f[i - 1] > 0) f[i] = f[i-1] + A[i];
            else f[i] = A[i];
            ans = max(ans , f[i]);
        }
        return ans;
    }
};
原文地址:https://www.cnblogs.com/x1957/p/3498344.html