经典的最大子段和
状态表示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; } };
by 1957