- 8
- 0
- 约1.33万字
- 约 73页
- 2017-06-15 发布于北京
- 举报
第三种情况的处理:S= 返回 S’1=max{1 ? i ? n/2}{ } S’2 =max{n/2+1 ?j ? n}{ } ? ak k=i n/2 ? ak k=n/2+1 j 确定i需O(n),确定j需O(n) S=S’1+S’2 ?ak k=i j 时间复杂度递推式 2 T(n/2) + O(n) ( n C ) O(1) ( n ? C) T(n) = 解上述递推式,得:T( n ) = O(n log n) 动态规划方法 思想:对a[1:j],记b[j],1 ?j ?n ?ak k=i j b[j]=max {1 ?i ?j} { } a[1:n]的最大子段和S= max {1 ?j ?n} max {1 ?i ?j} ?ak k=i j =max {1 ?j ?n} {b[j]} 而b[j]=max{b[j-1]+a[j],a[j]} b[j-1]0时 动态规划-程序 int MaxSum(int n, int *a) { int s = 0, b = 0; for (int i = 1;i = n;i ++ ) { if (b 0
原创力文档

文档评论(0)