zoukankan      html  css  js  c++  java
  • 01背包的优化问题

    通过不断的去模拟代码的运行 对背包问题有了更深的理解 sum[i][j]=max(sum[i-1][j],sum[i-1][j-x[i]]+v[i]); 实际上就是数据的不断更新过程 在上一子问题的基础上 对该子问题每个空间大小能放的最多价值进行更新 然后使用于下一个子问题  由于每个子问题都是最优解 最终得到的解就是最优解

    下午的背包刚入手 用的是二维数组 有一定程度的浪费空间
    对于一个子问题的每个空间对应的最佳价值 可以通过从高位到地位逆序的写法(下一个子问题求每个空间大小的最佳价值要使用的是上一个子问题此时的空间大小以及小于此时空间大小的最佳值) 采用逆序的写法 即照顾了只需要上一个子问题状态不被覆盖 有起到了节省空间的作用
    附上代码
    for(int i=1;i<=n;i++)
                {
                    for(int j=v;j>=weight[i];j--)
                    {
                        f[j]=max(f[j],f[j-weight[i]]+value[i]);
                    }
                }
    v为背包空间

  • 相关阅读:
    运维ipvsadm配置负载均衡
    vue--存储
    vue--v-model表单控件绑定
    CSS--外发光与内阴影
    vue运行报错--preventDefault
    vue运行报错--dependency
    vue--移动端兼容问题
    vue--生命周期
    vue--vuex
    Vue--vux组件库
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5260112.html
Copyright © 2011-2022 走看看