题目描述:有编号分别为1,2,3,4,5的五件物品,它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包,如何让背包里装入的物品具有最大的价值总和?
背包问题是典型的动态规划问题,也有一定的规律可循,通常采用自底向上的方式,先解决小问题,并存储,再解决大问题。
方法一:时间空间都为O(n^2)的解法,但可以得到最大价值情况下拿了哪些东西
这里dp[i][j]的含义是:在只有i个物品,最大容量为j时,能获得的最大价值
def bag(weight, value, max_W): N = len(weight) V = max_W dp = [[0 for i in range(V+1)] for j in range(N+1)] for i in range(1,N+1): for j in range(1,V+1): if weight[i-1]<=j: dp[i][j] = max(dp[i-12345678