`

动态规划之最大子段和问题

 
阅读更多

问题描述:
给定由n个整数(包含负整数)组成的序列a1,a2,...,an,求该序列子段和的最大值。

当所有整数均为负值时定义其最大子段和为0。
依此定义,所求的最优值为:

例如,当(a1,a2 , a3 , a4 , a5 ,a6)=(-2,11,-4,13,-5,-2)时,

最大子段和为:

11+(-4)+13 =20
1、最大子段和问题的简单算法:

代码:


此算法的时间复杂度:O(n3)。

可对此算法进行适当改进,使其时间复杂度变为:O(n2)。

代码:


<wbr>2、最大子段和问题的分治法:</wbr>

代码:

//最大子段和,分治算法。T(n)=O(nlog(n))。


3 最大子段和问题的动态规划算法:

代码:

<wbr>//最大子段和,动态规划,T(n)=O(n)。</wbr>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics