常规算法

动态规划:
01背包:
关键在于理解j-w(i),这里边的j代表的含义!!!!!!!!!!是背包最大可装j,所以首先要比较的就是w(i)是否大于j,如果第i个物品重量直接大于背包可以承受的质量,那就没必要装了,因为装不下!!!然后如果不大于的话,最优解当然是比较装与不装那个更好了,不装的结果已经知道了,装的结果如何最大呢?当然是背包可以装的最大质量j腾出物品i的质量,然后这些剩下的空间最大能装多找已经知道结果了,所以j最大能装多少也就知道了,这里理解了,第一个难点也就理解了,所有的难点也就理解了!!!!!!

for i in range(1, num + 1):
        for j in range(1, capacity + 1):
            for k in range((j // weightList[i - 1]) + 1):
                if valueExcel[i][j] < (valueExcel[i - 1][j - k*weightList[i - 1]] + k*valueList[i - 1]):
                    valueExcel[i][j] = (valueExcel[i - 1][j - k * weightList[i - 1]] + k*valueList[i - 1])

01背包,多重背包、完全背包的终极公示,k代表每一个物品的数量,想方设法弄出来就好了,顺序逐一对照

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值