给定有限序列a1,a2,....,整数a(可以是负数或正数),其中一段被定义为ai,..... aj,i> = 1且j< = n。我正在尝试创建一个算法,可以找到所有段的最小总和,换句话说,可以从序列中生成的所有可能段中的每一个,将它们各自的术语相加并制作一个由您获得的每一笔金额组成的集合。为了使其更清晰,如果sum_a是段的总和a1和sum_b是所有可能段的a1,a2等的总和,那么在我获得的所有总和中,伪代码将找到什么所有分段总和的最小总和?
更具体地说,我如何找到最小正总和?
答案 0 :(得分:4)
我不确定我是否理解正确:
cur_best = +infinity
cur_best_start = 1
cur_best_end = n
for start = 1..n:
for end = start..n:
sum_subsequence = 0
for i = start..end:
sum_subsequence = sum_subsequence + a_i
if (sum_subsequence > 0) and (sum_subsequence < cur_best):
cur_best = sum_subsequence
cur_best_start = start
cur_best_end = end
a
的所有子序列中最小的正数。