Loading

动态规划算法总结

1. 题源:牛课网,题号:OR176 连续子数组最大和 

  题目:输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)。
  思路:

  • 动态规划最简单的方法就是依次列举给出当前数组的几个元素,从后往前推理出数组与当前元素和结果数组的关系。
  • 当前数组:[a1,a2,a3,a4,a5]
  • 结果数组:[maxsum1, maxsum2, maxsum3, maxsum4, maxsum5]
  • 列出简单地几个元素:[a1,a2,a3]
  • 从后往前推理找到当前结点与结果数组的前面若干结点的关系。
  • suma3如何求呢? : 可能的组合情况情况: [a1, a2, a3] [a2 ,a3] [a3] , 如果 suma2 < 0, 那么sum = a3 ; 如果 suma2 >= 0 那么sum =sum + a3。其中:suma2就是比较[a1, a2]和[a2]比较谁大
  • 那么suma2如何求呢? sum2 : 可能情况:[a1, a2] [a2] 如果suma1<0, 那么 sum = a2; 如果suma1>=0, 那么sum=sum + a2
  • 那么suma2如何求呢? sum1就是a1

 

posted @ 2020-08-02 09:46  FishLight  阅读(413)  评论(0编辑  收藏  举报