zoukankan      html  css  js  c++  java
  • 动态规划算法总结

    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
  • 相关阅读:
    一道题DP
    BZOJ 3155: Preprefix sum
    BZOJ:3209: 花神的数论题
    TJU 4087. box
    BZOJ1192: [HNOI2006]鬼谷子的钱袋
    概率DP
    Codeforces Round #253 (Div. 2) D题
    二维树状数组
    Codeforces Round #250 (Div. 2)
    莫比乌斯函数
  • 原文地址:https://www.cnblogs.com/yulianggo/p/13417766.html
Copyright © 2011-2022 走看看