码迷,mamicode.com
首页 > 编程语言 > 详细

求最大子数组分析

时间:2015-03-08 15:37:45      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

第一种:

暴力枚举所有的子数组,然后比较选出最大,时间复杂度O(n^2)

 

第二种:

分治法,参见算法导论,时间复杂度O(nlogn)

 

第三种:

动态规划,时间复杂度O(n)

1、A[1..j+1]的最大子数组为:max{A[1..j] , A[i,j+1](1<=i<=j+1)最大值},用sum记录A[1..j]

 

2、A[i,j+1](1<=i<=j+1)最大值就是以A[j+1]结尾的最大子数组

设K[j+1]为以A[j+1]结尾的最大子数组,

K[j+1]=K[j]>0?A[j+1]+K[j]:A[j+1](以A[j+1]结尾的最大子数组肯定包含A[j+1],所以只需考虑是否包含其前面的K[j],如果K[j]>0则会包含)

 

求最大子数组分析

标签:

原文地址:http://www.cnblogs.com/littlebugfish/p/4321696.html

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