我是靠谱客的博主 自由冰淇淋,最近开发中收集的这篇文章主要介绍简单背包问题 获取最大价值~~(个人理解,看不懂看别家的),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    /**
     * @param {m}     物品重量数组
     * @param {v}     物品价值数组
     * @param {index} 当前待选择的物品索引
     * @param {C}     背包容量
     */
    function resloveKs(m, v, index, C) {
        if (C <= 0 || index < 0) return 0
        let ks = resloveKs(m, v, index - 1, C)
        if (C >= m[index - 1]) {
            ks = Math.max(ks, v[index - 1] + resloveKs(m, v, index - 1, C - m[index - 1]))
        }
        return ks
    }

    (function () {
        const Alist = [4, 5, 6, 12, 8]
        const Blist = [10, 62, 15, 78, 12]
        const size = Alist.length
        const C = 20
        console.log(resloveKs(Alist, Blist, size, C));
    })()


递归实现 商品数 0 ~ n 过程中   每一个数量级背包大小的最大价值 (背包数量级  0,1,2,3...)

比较获取最大的价值

 每一次增加商品就行判断 放入新商品当前数量级背包价值(放入新商品的价值加上背包剩余的数量级的最大价值,递归获取。)和不放入新商品当前背包数量级的最大价值。

-------- 不知道放入多少个商品, 所以先比较最后一个商品放不放入背包的最大价值    

        获取放入新商品后  递归获取剩余背包数量级的最大价值   

        获取不放入新商品  递归获取背包数量级下剩余商品的最大价值  进行比较

        通过 index 从最后往前进行倒叙“遍历”商品获取背包的最大价值。 

最后

以上就是自由冰淇淋为你收集整理的简单背包问题 获取最大价值~~(个人理解,看不懂看别家的)的全部内容,希望文章能够帮你解决简单背包问题 获取最大价值~~(个人理解,看不懂看别家的)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部