1957

无聊蛋疼的1957写的低端博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[leetcode]Maximum Subarray

Posted on 2013-12-30 19:19  1957  阅读(119)  评论(0编辑  收藏  举报

经典的最大子段和

状态表示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;
    }
};