美文网首页
从01背包到完全背包

从01背包到完全背包

作者: 柴柴总 | 来源:发表于2020-08-08 04:40 被阅读0次

01背包python代码(对应参考资料1练习题)

N = int(input())
V = int(input())

value = list()
value.append(0)
volume = list()
volume.append(0)
for i in map(int, input().split()):
    volume.append(i)
for i in map(int, input().split()):
    value.append(i)
# 初始化表,(N+1)*(V+1)大小,第一行和第一列始终为0
valueSum = [[0 for col in range(V+1)] for row in range(N+1)]
for v in range(1, V+1):
    for k in range(1, N+1):
        if volume[k] > v:
            valueSum[k][v] = valueSum[k-1][v]
        else:
            valueSum[k][v] = max(valueSum[k-1][v], valueSum[k-1][v-volume[k]] + value[k])

print(valueSum[N][V])

01背包问题对于每种物品有两种选择,取或者不取(1或0),故而叫01背包,01背包问题中每种物品只能选一次。而完全背包就有点不同,在完全背包问题中,每种物品可以选择任意多次
完全背包问题代码和01背包相比只多了层循环,这是因为01背包问题在第K个物品时只有选或不选两种选择,而完全背包问题,有多次选择(有限个数<=背包容量)
完全背包python代码

# 测试样例
# 输出
# 5
# 10
# 2 2 6 5 4
# 6 3 5 4 6
# 输出
# 30
N = int(input())
V = int(input())

value = list()
value.append(0)
volume = list()
volume.append(0)
for i in map(int, input().split()):
    volume.append(i)
for i in map(int, input().split()):
    value.append(i)
valueSum = [[0 for col in range(V+1)] for row in range(N+1)]
for v in range(1, V+1):
    for k in range(1, N+1):
        for i in range(int(v/volume[k]) + 1):
            valueSum[k][v] = max(valueSum[k][v], valueSum[k-1][v-volume[k]*i] + i*value[k])

print(valueSum[N][V])

参考资料

  1. 牛客网01背包练习题
  2. 完全背包问题参考博客

相关文章

  • 从01背包到完全背包

    01背包python代码(对应参考资料1练习题) 01背包问题对于每种物品有两种选择,取或者不取(1或0),故而叫...

  • 算法模板(一) 01背包,多重背包,完全背包

    01背包 多重背包 完全背包

  • 01背包和完全背包

    最近学习《背包问题九讲》,对0-1背包和完全背包有了新的认识。最新版本请访问 https://github.com...

  • java算法巩固训练day01

    01背包 完全背包 多重背包 多重背包二进制优化算法

  • 动态规划完全背包01

    完全背包 和01背包一样力扣上没有没有纯完全背包问题,都是需要完全背包的各种应⽤,需要转化成完全背包问题,所以我们...

  • DP小结

    DP种类 线性DP 区间DP 树形DP 背包DP01背包满背包完全背包(转成01背包) 例子:线性动规:拦截导弹,...

  • 01-背包、完全背包、多重背包及其相关应用

    本文介绍了背包问题系列,主要包括: 【1】 01-背包及其应用【2】完全背包及其应用【3】多重背包 【1】01-背...

  • 动态规划-混合、二维费用、分组背包

    混合背包 如果将01背包、完全背包、多重背包三个背包混合起来,也就是说,有的物品只可以取一次(01背包),有的物品...

  • 背包问题2(完全背包)

    01背包是指每件物品有且只有一件,而完全背包则是每件物品件数无限,求装入背包所对应的最值。完全背包也有公式,在01...

  • 背包入门

    背包,是动态规划里一类典型的问题,主要有:01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包,有依赖背...

网友评论

      本文标题:从01背包到完全背包

      本文链接:https://www.haomeiwen.com/subject/bsycdktx.html