首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表排序法

列表排序法
EN

Stack Overflow用户
提问于 2015-06-11 11:20:58
回答 2查看 43关注 0票数 0

所以,我必须找到连续子集的最大和,我在python中遵循这个算法。

代码语言:javascript
运行
复制
def SubSeq(list):
    final_list = None
    suming = 0
    for start in range(len(list)):
        for end in range(start+1, len(list)+1):
            subseq = list[start:end]
            summation= sum(list[start:end])
            if summation > suming:
                suming = summation
                final_list = subseq
    return final_list


print SubSeq([5, 15, -30, 10, -5, 40, 10])

我想知道这是否是一种正确的动态编程方式,尽管运行时间是O(n^2)。另外,有没有可能让它成为O(n)

EN

Stack Overflow用户

发布于 2015-06-11 11:40:52

基本上是再次计算和,again.You可以通过将和存储在数组中来避免这种情况。你可以用O(n)来做。

设S0,1.n-1是序列设T0,1,.n-1是从i元开始的最大连续和。

现在要填充Ti,从相反开始。Tn-1=最大值(Sn-1,0)

现在Ti=max(Ti+1+Si,Si ,0)

现在,遍历'T‘数组,找到最大和。

设Tm为最大值。

计算从Sm开始的精确序列,并将所有元素加到和等于Tm为止

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30779358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档