最大子段和问题动态规划算法.pptVIP

  • 219
  • 0
  • 约3.52千字
  • 约 12页
  • 2017-08-26 发布于江苏
  • 举报
最大子段和问题动态规划算法.ppt

三、求最大子段和 2.最大子段和问题的分治算法 从最大子段和问题的解的结构可以看出,它适合用分治法求解。 a[1:n]的最大子段和有三种情形: (1) a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。 (2) a[1:n]的最大子段和与a[n/2+1:n]的最大子段和相同。 (3) a[1:n]的最大子段和为 , 且1≤i≤n/2, n/2+1≤j≤n。 其中(1)和(2)这两种情形可递归求得。 对于情形(3), a[n/2]与a[n/2+1]在最优子序列中,a[1:n]的最大子段和是a[1:n/2]的最大子段和与a[n/2+1:n]的最大子段和的和。 求最大子段和的分治算法如下: int MaxSubSum(int *a, int left, int right) { int sum =0; if (left==right) sum= a[left] 0?a[left]:0; else { int center = (left+right)/2; int leftsum = MaxSubSum(a, left, center); int rightsum = MaxSubSum(a, center+1, right ); int s

文档评论(0)

1亿VIP精品文档

相关文档