1.1 問題描述
題目名稱:
問題描述:給出一組序列,求其連續的一段子序列加起來的和最大,即最大子段和問題。
1.2 算法描述
(1)因為題目要求算法的時間複雜度為o(n),蠻力枚舉法O(n^3),優化枚舉法O(n^2)分而治之法O(nlogn)都不可以,是以我們考慮用到動态規劃。
(2)
給出問題表示:Di:以X[i]開頭的最大子數組和
明确原始問題:Smax = max{D[i]},1<=i<=n
1.3 問題求解:
1.3.1 根據最優子結構性質,列出遞歸方程式。
Di:以X[i]開頭的最大子數組和
初始化:D[n]=X[n]
①當D[i+1]<0時:D[i]=X[i];
②當D[i+1]>0時: D[i]=X[i]+D[i+1];
1.3.2 給出填表法中表的次元、填表範圍和填表順序。
緯度:一維
填表範圍:1~n
填表順序:從右到左,自底向上
1.3.3 分析該算法的時間和空間複雜度
時間複雜度:O(n)
原因:因為隻使用了一個for循環。