• 动态规划--数轴动态规划问题


    【01背包问题】

    1.如何用子问题表示

    P[1…n , C]表示总问题

    dp[ i ][ j ]表示P[ i…n,j ]的最大价值

    则总问题P[1…n , C] = max{ P[2…n , C - v1 ] , P[ 2…n , C] }

    2. 优化子结构和重叠子问题

    3. 递归表达式

    dp[ i ][ j ] = max{ dp[ i + 1][ j - wi ] + vi , dp[ i + 1][ j ]}(选与不选)

    递归终点:dp[ n ] [ j ] = vn (j > wn) ; dp[ n ][ j ] = 0(j < wn)

    4.伪代码

    For j=0 To min(wn-1 , C)

                Do dp[ n ][ j ] = 0;

    For j=wn To C

               Do dp[ n ][ j ] = vn;

    For i = n-1 To 2

              Do For j = 0 To min(wi-1 , C)

                         Do dp[ i ][ j ] = m[ i+1 ][ j ];

                    For j = wi To C

                         Do dp[ i ][ j ] = max{ dp[ i + 1][ j - wi ] + vi , dp[ i + 1][ j ]}

    if C < w1

    Then dp[ 1 ][ C ] = dp[ 2 ][ C ]

    Else dp[ 1 ][ C ] = max{ dp[ 2 ][ C - w1 ] + v1 , dp[ 2 ][ C ] }

     【购物问题】

  • 相关阅读:
    数据结构-索引
    CAS自旋volatile变量
    深入理解AQS
    EL表达式
    JSTL 核心标签库 使用
    JSP 九个隐含JSP对象
    jsp基本语法总结
    Commons FileUpLoad 两种上传方式解
    Servlet 异常处理
    Servlet 过滤器 Filter
  • 原文地址:https://www.cnblogs.com/duanshuai/p/13166258.html
Copyright © 2020-2023  润新知