最大连续子序列和问题python_最大和连续子序列是零?

我试图理解这个问题的解决方法:“给定一个数字序列,求这些数字的连续子序列的最大和。”我引用了下面的一个解决方案和解释。在

我不明白的是,在“maxendinghere=max(maxendinghere+s,0)”一行中,为什么maxendinghere会为零?在def max_sum_subsequence(seq):

maxsofar = 0

maxendinghere = 0

for s in seq:

# invariant: maxendinghere and maxsofar are accurate

# are accurate up to s

maxendinghere = max(maxendinghere + s, 0)

maxsofar = max(maxsofar, maxendinghere)

return maxsofar

该网站的解释是“好吧,基本上maxendinghere就是积累子序列的东西——它不断地将下一个元素滚动到自己的内部。如果这个累计和变为负数,我们知道我们当前跟踪的结束于此的子序列比重新开始的空子序列更糟糕;因此,我们可以重置子序列累加器,循环不变量的第一个子句仍然有效。”

我不明白的是,假设我的序列是2-34:为什么maxendinghere会为零?没有和为零的子序列。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值