最长子序列的相关计算
给定一个数字序列,数字序列由正负整数构成,我们希望得到一个连续子序列使得子序列中各元素之和最大。
例:数组A[] = [-2,1,-3,4,-1,2,1,-5,4],则连续的子序列[4,-1,2,1]有最大的和6.
相关思路为:建立一个数组专门用来存储子序列之和
for(int i=1;i<n;i++)
{
if(sum[i-1]>0)
{
sum[i]=sum[i-1]+a[i];
}
else
sum[i]=a[i];
}
首相让数组sum[0]=a[0],然后把连续数组和计入在sum[i]中,一旦sum[i]<0,说明这个子序列不能连续下去了,就从断点处重新构建子序列,直到将整个数组遍历
最后只需要对sum进行排序,sum中最大的元素就是我们需要求的