背包问题

作者: Zentopia | 来源:发表于2017-11-09 18:06 被阅读13次

动态规划 Python 3 实现:

capacity = 7
num = 4

optimal_matrix = [[0 for x in range(capacity + 1)] for y in range(num + 1)]
weight = [0, 1, 3, 4, 5]
value = [0, 1, 4, 5, 7]

for c in range(capacity + 1):
    for n in range(1, num + 1):
        if weight[n] <= c:
            optimal_matrix[n][c] = max(value[n]+ optimal_matrix[n - 1][c - weight[n]], optimal_matrix[n - 1][c])
        else:
            optimal_matrix[n][c] = optimal_matrix[n - 1][c]

print("max_value: ", optimal_matrix[num][capacity])

c = capacity
n = num

while n > 0:
    if optimal_matrix[n][c] == optimal_matrix[n - 1][c]:
        n = n - 1
    else:
        print("index:", n, "weight:", weight[n], "value:", value[n])
        c = c - weight[n]
        n = n - 1

相关文章

  • 背包问题(完全背包)

    动态规划合集: 1.矩阵链乘法2.投资组合问题3.完全背包问题4.01背包问题5.最长公共子序列 例题3——背包问...

  • Algorithm进阶计划 -- 动态规划(下)

    经典动态规划背包问题最长子序列问题 1. 背包问题 1.1 0-1 背包问题 0-1 背包问题,描述如下: 上面...

  • 背包问题

    0-1背包问题 问题 n个物体,它们各自有重量和价值,给定一个有容量的背包,如何让背包里装入的物体价值总和最大? ...

  • 背包问题

    问题描述 假如有一个能装下4磅的背包,如何从下列商品列表中选择商品填充背包,使价值达到最大: 动态规划 要解决背包...

  • 背包问题

    (1)0-1背包容量为10的背包,有5种物品,每种物品只有一个,其重量分别为5,4,3,2,1,其价值分别为1,2...

  • 背包问题

  • 背包问题

    01背包(物品只有一个) 有N件物品和一个容量为V的背包。第i建物品的费用是w[i],价值是v[i]。求解将哪些物...

  • 背包问题

    1. 01背包 状态说明:背包体积为v,物品个数为n,f[n,v]表示前n件物品加入背包的最大价值。c_i,w_i...

  • 背包问题

    01背包 优化空间复杂度,变为一维; 外循环依然是n从1->N, 注意内循环 v是从V->0,为什么内循环是V->...

  • 背包问题

    介绍 学习动态规划算法的经典例题。动态规划算法一般有3个特征1、最优化原理:最优解所包含的子问题的解也是最优的。2...

网友评论

    本文标题:背包问题

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