Leetcode上有一个Max Sum问题,题目的描述很简单,即对于一个输入的数组,求其连续子数组的最大和。比如说,A={ 6,-1,5,4,-7},那么其连续子数组的最大和为6 + (-1) +5 + 4 = 14.
分析:
这是很简单的动态规划题,动态规划做多了,第一个想法就是用一个一维数组记录以每个元素为结尾的子序列的最大和,然后再扫描一遍这个数组,以获取最大值。但是仔细分析一下,其实不需要用一个一维数组记录每个位置的最大和,因为没有要求返回具有最大和的子序列。所以使用一个变量记住当前连续子序列的最大和就行了,再用另一个变量记住最大和max,当curMax更新时,max也随之更新就可以了。
int maxSum(int a[],int n)
{
if(n==0)
return 0;
i