算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间.docxVIP

  • 3
  • 0
  • 约3.62千字
  • 约 5页
  • 2017-12-08 发布于浙江
  • 举报

算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间.docx

算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间

算法探讨——再议经典算法问题:求最大子序列和、绝对值最大子序列和以及其区间给定任一数字序列,如{-5,4,-20,16,-2,-3},求出其最大子序列和,绝对值最大子序列和以及对应的区间,在这个例子中,人肉计算可知最大子序列和为16,区间为[3,3)(数组下标从0开始),而绝对值最大子序列和为-21,区间为[0,2],那么算法如何描述及实现呢?在经典的书籍《数据结构与算法分析 C语言描述第2版》中,作者向我们介绍了求最大子序列和的三种算法,时间复杂度从O(N3)下降到O(N),求最大子序列和绝对值和以及其区间是我对这一问题的扩展。一、求最大子序列和以及其区间求最大子序列和的算法相对简单,并且可以使用动态规划思想将其优化至O(N),问题的关键:前面已输入的元素的计算结果并不依赖于后面的输入。O(N2)算法:N次遍历数组,对其中每一个元素,继续遍历后续每个元素,并求和,如发现比当前和大,替换当前和。C/C++实现: 1intmaxsub(constint a[],int n) 2 { 3int sum, max, i, j, begin, end; 4 begin = end = max = 0; 5for(i = 0;i n;i++) 6 { 7 sum = 0; 8for(j = i;jn;j++) 9 {10

文档评论(0)

1亿VIP精品文档

相关文档