题目要求
求一个数组的最大连续子数组的和,数组中肯定有负数。
思路
采用动归的方式。
子问题:局部数字构成的数组,它的最大连续和
状态F(i):前i个元素组成的数组,它的最大连续子序列的和
转移方程:F(i) = max(F(i-1)+a[i],a[i])
图解
代码实现
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
if (array.empty())
{
return 0;
}
int ret = array[0];
for (int i = 1; i < array.size(); i++)
{
array[i] = max(array[i - 1] + array[i], array[i]);
ret = max(ret, array[i]);
}
return ret;
}
};