問題描述:
給定由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)。
代碼:
代碼:
//最大子段和,分治算法。T(n)=O(nlog(n))。
3 最大子段和問題的動態規划算法:
代碼:
