• 动态规划之背包问题


    01背包

    有n种不同的物品,每种物品分别有各自的体积 v[i]价值 w[i]  现给一个容量为V的背包,问这个背包最多可装下多少价值的物品。

    1 for(int i = 1; i <= n; i++)
    2     for(int j = V; j >= v[i]; j--)
    3         dp[j] = max(dp[j], dp[j-v[i]]+w[i]);    //dp[V]为所求

    完全背包

    01背包每种物品只能取一个, 完全背包即物品不记件数,可取多件

    1 for(int i = 1; i <= n; i++)
    2     for(int j = v[i]; j <= V; j++)     //和01背包的不同 
    3         dp[j] = max(dp[j],dp[j-v[i]+w[i]]);

    多重背包

    每种物品可取 件数h[i] 已经确定。

    1 for(int i = 1; i <= n; i++)
    2     for(int j = V; j >= v[i]; j--)
    3         for(int k = 0; k <= h[i]; k++)
    4             if(j >= k*v[i])
    5                 dp[j] = max(dp[j],dp[j - k*v[i]] + k*w[i]);

    这样还是都差不多可以理解了,明天再学多重背包的二进制分解优化(看了一下下 好像没看懂 hhhhh

    今天就酱啦~  感觉自己ya 虚度光阴 学了好些时候了的也 今天一直在重复敲模板  希望明天能有进步! 

    ヾ(•ω•`)o 白白 

  • 相关阅读:
    二十三、Android源代码是这样搞到的(图解)
    defer用途
    vscode中go插件配置
    peewee外键性能问题
    bootstrap-select属性
    go环境变量及build文件
    peewee在flask中的配置
    python元类
    Java静态方法、单例模式区别
    Java实现list清除重复的字符串
  • 原文地址:https://www.cnblogs.com/JiaaaaKe/p/9461333.html
Copyright © 2020-2023  润新知