思路1:动态规划,dp[i]表示到当前下标最大子数组的和,初值即为array[0],dp[i]由dp[i-1]与array[i]来决定,如果前一个下标的最大子数组和为正数,且array[i]也为正数,则dp[i]为两者之和,否则dp[i]为array[i];每次求得dp[i]与max比较即可
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
int dp[array.size()];
dp[0]=array[0];
int max=dp[0];
for(int i=1;i<array.size();i++)
{
if(dp[i-1]>0)
dp[i]=dp[i-1]+array[i];
else
dp[i]=array[i];
if(max<dp[i])
max=dp[i];
}
return max;
}
};