動態規划之最大子段和問題


問題描述:
給定由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)。

代碼:


 

2、最大子段和問題的分治法:

代碼:

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

 


3 最大子段和問題的動態規划算法:

代碼:

//最大子段和,動態規划,T(n)=O(n)。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM