问题:给定一个浮点数向量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)的时间内解决寻找子向量最大和的问题。参考《编程珠玑》
本文探讨了如何从一个浮点数向量中找出一个子向量,使得该子向量的元素之和尽可能地接近0。通过使用累加数组cum,并对它进行排序,可以在O(nlgn)时间内找到最优解。此外,文中还提及了如何在O(n*n)时间内找到子向量的最大和。
问题:给定一个浮点数向量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)的时间内解决寻找子向量最大和的问题。参考《编程珠玑》

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