例如
a[3]={1,2,3}
1,2,3,1+2,2+3,1+2+3
所以我的程序应该打印
1
2
3
3
5
8
我知道有一个计算总和的公式 但我想要的是计算个别金额的有效方法。
建议使用seg树吗?
答案 0 :(得分:1)
假设通过子阵列表示某些作者通常将子阵列称为阵列的连续切片,那么您正在寻找Kadane's algorithm。
通过逐步找到最大的子阵列来工作。在搜索的任何给定点,该索引上的最大子数组是空数组(sum == 0),或者由比在前一个位置结束的最大子数组多一个元素组成。你可以跟踪你所发现的最好的内容,这样你就可以将子阵列与目前最好的子阵列进行比较,并返回实际的最佳解决方案。
它也可以扩展到多个维度。