问题描述:
给定长度为n的整数序列,a[0...n-1], 求某个子区间[i,j]使得a[i]+…+a[j]和最大.
空间优化后的动态规划:
用两个变量sum和ans,sum用来保存当前的子段和,ans用来记录最大的子段和。
循环遍历,如果当前子段和 > 最大子段和,那么更新最大子段和;如果当前子段和 < 0,那么设置当前子段和 = 0。
1 int MaxSubsequenceSum(int a[],int n) 2 { 3 int sum=0,ans=0; 4 for(int i=0;i<n;i++){ 5 sum+=a[i]; 6 if(sum<0) 7 sum=0; 8 ans=max(sum,ans); 9 } 10 return ans; 11 }
时间复杂度:O(n)
本文介绍了一种求解整数序列中具有最大和的连续子序列问题的高效算法。通过动态规划的方法,在O(n)的时间复杂度内找到最优解。关键在于维护当前子段和与最大子段和。
693

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



