哪种算法是求所有子阵列之和的最佳算法
Which is the best algorithm to find sum of all subarray?
例如,如果
a[3]={1,2,3}
1,2,3,1+2,2+3,1+2+3
所以我的程序应该打印
1
2
3
3
5
8
我知道有一个计算总数的公式
但我想要的是一种有效的计算个人总和的方法。
一棵seg树可取吗?
假设子数组是指一些作者通常所说的子数组是数组的连续切片,那么您正在寻找Kadane的算法。
它的工作原理是逐步找到最大的子数组。在搜索的任何给定点,该索引上的最大子数组要么是空数组(sum==零),要么由比在前一位置结束的最大子阵列多一个元素组成。你可以跟踪你发现的最好的,这样你就可以将子阵列与迄今为止最好的进行比较,并返回实际的最佳解决方案。
它也可以扩展到多个维度。
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- OpenMP阵列性能较差
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法 - 圆形阵列旋转
- 如何在较高和较低数字的阵列中适应搜索算法(3N / 2)-2
- 计算以毫秒为单位的分类算法对整数阵列排序的时间
- 比较阵列相似性的最佳比较算法是什么?
- 将双打的阵列汇总为较大的价值跨度:正确的算法
- 阵列调试不正确的输出,复杂算法
- 哪种算法是求所有子阵列之和的最佳算法
- 实现算法(气泡排序)来组织阵列
- 算法将一个硬币矩阵转移到另一个硬币阵列
- 以以下格式添加2D阵列的元素的算法