这就是一道简单的动态规划问题啊!
f(i)={f(i−1)+arr(i),arr(i),if f(i−1)>=0if f(i−1) <0
f(i) 表示以i结尾的子数组和的最大值。
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
if(array.empty())
return 0;
int n = array.size();
int sum[n];
for(int i=0;i<n;i++)
{
if(i==0||sum[i-1]<=0)
sum[i] = array[i];
else
sum[i] = sum[i-1]+array[i];
}
int max=sum[0];
for(int i=1;i<n;i++){
if(sum[i]>max)
max=sum[i];
}
return max;
}
};