子向量之和最接近0?

问题:给定一个浮点数向量a[]1~n],求子向量,使其之和最接近于0。

 

解答:初始化累加数组cum[i]=a[0]+...+x[i]。如果cum[k-1]=c[u],那么子向量a[k~u]之和则接近于0。

于是问题转化为寻求符合条件的k和u。具体做法是排序cum数组,寻找相邻最小的cum[k]和cum[u],因此能够在O(nlgn)的时间内完成任务。

 

通过cum数组的应用还能够在O(n*n)的时间内解决寻找子向量最大和的问题。参考《编程珠玑》

你可能感兴趣的:(编程,c,任务)