码迷,mamicode.com
首页 > 其他好文 > 详细

最大连续子串

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

标签:style   blog   color   for   问题   div   log   c   

问题:一个由正数、负数、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

最大连续子串

标签:style   blog   color   for   问题   div   log   c   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!