美文网首页
1.1、动态规划

1.1、动态规划

作者: 懒羊羊3号 | 来源:发表于2020-04-15 12:09 被阅读0次

    用一纬数组记录,如果不行就用二维,大部分是二维。
    1、背包问题
    01背包:有n件物体,容量为v的背包,使物品价值最大。假设第i件物品价值为c[i],重量为w[i]。dp[i][v]表示前i件物品放入v中的最大价值
    dp[i][v] = Math.max(dp[i-1][v], dp[i-1][v-w[i]]+c[i])
    完全背包:每件物品可以选无限次
    dp[i][v] = Math.max(dp[i-1][v-kw[i]]+kc[i]) 0<k*w[i]<v

    2、路径,类似这种矩形


    image.png

    就是比右一步和下一步

    3、斐波那契,一纬数组
    一次只能走1步或者2步楼梯,楼梯有n步,问有多少种走法
    青蛙跳台阶
    dp[n] = dp[n-1] + dp[n-2]

    4、最大升序子序列问题
    最大子序和
    dp数组是以当前arr[i]结尾的最大升序子序列

    5、最长公共子序列
    编辑距离,以i结尾的字符串a和以j结尾的字符串b
    当a[i]===b[j],dp[i][j] = dp[i][j]+1
    不等,dp[i][j] =max( dp[i-1][j], dp[i][j-1] )
    kmp算法基于这个

    相关文章

      网友评论

          本文标题:1.1、动态规划

          本文链接:https://www.haomeiwen.com/subject/ignwuhtx.html