首页 > 其他 > 详细

最大连续子串

时间:2014-08-01 19:12:22      阅读:276      评论:0      收藏:0      [点我收藏+]

问题:一个由正数、负数、0组成的序列中,求一个连续子序列,使他们之和最大

 

解一:暴力法,直接求出所有可能,找出最大值

 1 MAX_SEQ_SUM( A, len )
 2     max = A[0]
 3     max_b = max_e = 0
 4 
 5     for i -> 0:len-1
 6         sum = 0
 7         for j->i:len-1
 8             if j == i then sum = A[i]
 9             else sum += A[i]
10             if sum > max then
11                 max = sum
12                 max_b = i
13                 max_e = j
14     
15     return max,max_b,max_e

复杂度为:O(n^2)

 

解法2:遍历数组时记录当前和,如果和大于最大值,则记录,如果和小于0,则从当前元素重新计算

MAX_SEQ_SUM(A,len)
    sum = max = A[0]
    max_b = max_e = 0

    for i -> 1:len
        if sum < 0 then sum = A[i] ; b = e = i;
        else  sum += A[i] ; e = i;

        if sum < max then  max = sum ; max_b = b; max_e = e;

    return max,max_b,max_e

复杂度为:O(n)

最大连续子串,布布扣,bubuko.com

最大连续子串

原文:http://www.cnblogs.com/stormli/p/max_seq_sum.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!