一、动态规划的递归式:n是这组数的长度
公式意义:当以第 i-1个数字结尾的子数组中所有数字的和小于0时,如果把这个负数与第 i 个数累加,得到的结果比第 i 个数字本身还要小,所以这种情况下以第 i 个数字结尾的子数组就是第 i 个数字本身。如果以第 i-1 个数字结尾的子数组中所有数字的和大于0,与第 i 个数字累加就得到以第 i个数字结尾的子数组中所有数字的和
二、时间复杂度:O(n)
O(n)
int MaxSum(int *arr, int n)
{
int sum = 0,tmp = 0;
for(int i=0; i<n; i++)
{
if(tmp > 0)
{
tmp += arr[i];
}
else
{
tmp = arr[i];
}
sum = max(tmp,sum);
}
return sum;
}