问题描述:
输出一个数组里面连续子序列的最大和。要求时间复杂度O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
解题思路:
动态规划的经典算法,思路比较简单。(定义一个临时变量b,遍历每一个元素,若当前b<0,则令b=a[i],否则b+=a[i])
Code:
/*全为负数,连续子序列最大和为0*/
int MaxSumOfSeq(vector<int> &num,int n)
{
int sum=0;
int b=0;
for(int i=0;i<n;i++)
{
if(b<0)
b=num[i];
else
b+=num[i];
if(sum<b)
sum=b;
}
return sum;
}
本文介绍了一个使用动态规划解决的问题,即在给定数组中找到连续子序列的最大和,时间复杂度为O(n)。通过遍历数组并应用特定的条件逻辑,我们能够有效地找出最大和子序列。
1118

被折叠的 条评论
为什么被折叠?



