zoukankan      html  css  js  c++  java
  • 动态规划之背包问题

    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 白白 

  • 相关阅读:
    javascript对象继承的实现
    浏览器兼容问题汇总<转>
    DOM笔记
    Ajax日记
    学习态度
    项目1
    导航项目-整体布局
    有关布局
    导航项目开始
    windows 服务 定时程序 跑不出数据
  • 原文地址:https://www.cnblogs.com/JiaaaaKe/p/9461333.html
Copyright © 2011-2022 走看看