【问题标题】:Maximum contiguous sum using Divide and Conquer使用分而治之的最大连续和
【发布时间】:2017-02-17 17:40:52
【问题描述】:

我对“使用分而治之的方法来编写一种高效的递归算法,在给定的 n 个实数(正或负)值列表的任何连续子列表中找到最大和”感到困惑。

我知道如何在不使用分而治之的情况下解决问题,但不知道如何使用分而治之的方法。

感谢您的帮助!

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    将列表 l 拆分为两个子列表 l1,l2。令 l1_last、l2_first 分别为 l1 的最后一个元素和 l2 的第一个元素(l2_first 在列表 l 中紧跟 l1_last)。

    查找 s1a 不包含 l1 的子列表 l1a 的最大连续和 l1_last 和 s1b 是包含 l1_last 的 l1 的子列表 l1b 的最大连续和。

    同样对 l2 做同样的事情,得到 s2a、l2a 和 s2b,l2b,其中 l1_last 被 l2_first 替换。 l 的子列表的最大连续和是 s1a, s1b, s2a, s2b, s1b+s2b 和对应的子列表 l1a,l1b,l2a,l2b c(l1b,l2b)。

    【讨论】:

    • 感谢您的帮助!但是,我对找到 S1a 和 S2a 的原因感到困惑。
    • 因为最大连续和可能出现在这样的子列表中,考虑 l=(1,1,1,-1,-1,-1,) 在第二个“-1”处拆分:l1 =(1,1,1,-1), l2=(-1,-1)。
    猜你喜欢
    • 2020-03-30
    • 2017-06-07
    • 2012-09-09
    • 2017-01-12
    • 2013-01-16
    • 2016-06-15
    • 2011-10-23
    • 2016-05-01
    • 2019-04-08
    相关资源
    最近更新 更多