哪种算法是求所有子阵列之和的最佳算法

Which is the best algorithm to find sum of all subarray?

本文关键字:算法 阵列 和的 最佳      更新时间:2023-10-16

例如,如果

a[3]={1,2,3}
 1,2,3,1+2,2+3,1+2+3  

所以我的程序应该打印
1
2
3
3
5
8

我知道有一个计算总数的公式
但我想要的是一种有效的计算个人总和的方法。

一棵seg树可取吗?

假设子数组是指一些作者通常所说的子数组是数组的连续切片,那么您正在寻找Kadane的算法。

它的工作原理是逐步找到最大的子数组。在搜索的任何给定点,该索引上的最大子数组要么是空数组(sum==零),要么由比在前一位置结束的最大子阵列多一个元素组成。你可以跟踪你发现的最好的,这样你就可以将子阵列与迄今为止最好的进行比较,并返回实际的最佳解决方案。

它也可以扩展到多个维度。