<tbody id="e4aqk"></tbody>
<em id="e4aqk"></em><em id="e4aqk"></em>
    1. <button id="e4aqk"><acronym id="e4aqk"><u id="e4aqk"></u></acronym></button>
    2. <tbody id="e4aqk"></tbody><em id="e4aqk"><acronym id="e4aqk"></acronym></em>
      <th id="e4aqk"></th>
      <th id="e4aqk"></th>
      <tbody id="e4aqk"><noscript id="e4aqk"></noscript></tbody>

        新闻分类

        产品分类

        联系我们

        深圳市丰茂手袋皮具有限公司

        电话:0755-27378729

        邮箱:bfm@szbfm.com

        传真:0755-27378857

        地址:深圳市宝安区福永街道凤凰第一工业区A31栋

        网址:www.e-komekome.com

        关于三种背包的问题

        您的当前位置: 首 页 >> 新闻中心 >> 技术知识

        关于三种背包的问题

        发布日期:2019-06-29 作者:admin 点击:

        关于三种背包的问题

        【摘要】有人说,困难的题目都是由简单的题目叠加而来的。这句话是否公理暂且存之不论,但它在本讲中已经得到了充分的体现。本来01背包、完全背包、多重背包都不是什么难题,但将它们简单地组合起来以后就得到了这样一道一定能吓倒不少人的题目。但只要基础扎实,领会三种基本背包问题的思想,就可以做到把困难的题目拆分成简单的题目来解决。

        如果将P01、P02、P03混合起来。也就是说,有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。应该怎么求解呢?
        背包混合

        商务包公文包考虑到在P01和P02中Z后给出的伪代码只有一处不同,故如果只有两类物品:一类物品只能取一次,另一类物品可以取无限次,那么只需在对每个物品应用转移方程时,根据物品的类别选用顺序或逆序的循环即可,复杂度是O(VN)。伪代码如下:
        for i=1..N
        if 第i件物品是01背包
        for v=V..0
        f[v]=max{f[v],f[v-c]+w};
        else if 第i件物品是完全背包
        for v=0..V
        f[v]=max{f[v],f[v-c]+w};
        再加上多重背包
        如果再加上有的物品Z多可以取有限次,那么原则上也可以给出O(VN)的解法:遇到多重背包类型的物品用单调队列解即可。但如果不考虑超过NOIP范围的算法的话,用P03中将每个这类物品分成O(log n)个01背包的物品的方法也已经很优了。
        小结
        有人说,困难的题目都是由简单的题目叠加而来的。这句话是否公理暂且存之不论,但它在本讲中已经得到了充分的体现。本来01背包、完全背包、多重背包都不是什么难题,但将它们简单地组合起来以后就得到了这样一道一定能吓倒不少人的题目。但只要基础扎实,领会三种基本背包问题的思想,就可以做到把困难的题目拆分成简单的题目来解决。



        本文网址:http://www.e-komekome.com/news/404.html

        相关标签:商务包公文包

        Z近浏览:

        相关产品:

        在线客服
        分享 一键分享
        欢迎给我们留言
        请在此输入留言内容,我们会尽快与您联系。
        姓名
        联系人
        电话
        座机/手机号码
        邮箱
        邮箱
        地址
        地址
        性色av无码无在线观看_老司机亚洲精品影院_中国老太毛茸茸xxxxhd_色悠久久久久久久综合网伊人