求(连续)子数组的最大和
大致思路:
一次AC,用到了我的“拖累思想”。
AC代码:
class Solution {
public:
int maxSubArray(int A[], int n) {
if(n==0)
return 0;
if(n==1)
return A[0];
int f[5000]; //f[i]=A[i]所在的并且以A[i]结尾的最大子数组的和
f[0] = A[0];
int maxx=-1e9;
maxx = max(f[0],maxx);
for(int i=1;i<n;i++)
{
if(f[i-1]<0) //就不要拖累我当前的数啦!!
f[i]=A[i];
else
f[i]=f[i-1]+A[i];
maxx = max(f[i],maxx);
}
return maxx;
}
};