动态规划,我们需要写出其转移方程。我们设f[n]表示以下标n结尾的连续数组的最大和。
对于每一个数组中的元素,有如下转移方程:
接下来就直接在f中找到最大的那一个元素即可。
代码如下所示:
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
int size = array.size();
vector<int> res(size);
res[0]=array[0];
int ans=array[0];
for(int i=1;i<size;++i){
res[i] = (res[i-1]<0) ? array[i] : res[i-1] + array[i];
ans = max(ans, res[i]);
}
return ans;
}
};