zoukankan      html  css  js  c++  java
  • 最大连续子序列之和问题

    (源自算法分析课件)

    长度为n的数组有n2个子序列,长度为n的序列求和时间复杂度为O(n),这样穷举求解的方法是与本题无关的,呵呵。

     1 int maxSubSequenceSum( int a[ ], int n )
     2 {
     3   maxSum = 0;
     4   subSum = 0;
     5   
     6   for ( j = 0; j<n; j++ ) // i 是subSum的起始位置,j 是subSum的结束位置
     7   { 
     8     subSum += a[ j ];  /* subSum是从始至终一直在累加的,当为负时归0。
     9                 而maxSum就是整个过程中subSum最大的值。
    10                 算法的思想是:subSum是从前往后递进的子序列和,
    11                 只要subSum为正,它对后面的子序列的和都是起积极作用的,
    12                 为负时起消极作用,所以subSum归0 。*/
    13     if ( subSum > maxSum ) //刷新最大值
    14         maxSum = subSum;
    15     else
    16       if ( subSum < 0 ) //过滤累加负值部分
    17         subSum = 0;
    18   }
    19   return maxSum;
    20 }
  • 相关阅读:
    Alpha 冲刺报告(5/10)
    Alpha 冲刺报告(4/10)
    Alpha 冲刺报告(3/10)
    Alpha 冲刺报告(2/10)
    Alpha 冲刺报告(1/10)
    项目需求分析答辩总结
    项目选题报告答辩总结
    项目UML设计(团队)
    第七次作业--项目需求分析(团队)
    第六次作业--结对编程第二次
  • 原文地址:https://www.cnblogs.com/kevinGaoblog/p/2431970.html
Copyright © 2011-2022 走看看