题目:如图所示的一个20kg容量的背包和5个物品,求背包最多能装下多少价值的物品?
0-1背包问题其实很简单!
搞清楚下面3个问题:
1.能不能装下?
2.能装的话,装或不装哪个的价值要高?
3.开辟数组来填空
(1)初始或边界的空怎么填?赋值
(2)其它空怎么填?装不下,保留上一个状态的值;能装,转移方程
4.空间怎么优化一下?降维(高阶玩法,新手搞清楚前面3个问题即可。)
# Python3代码实现
def Knapsack():
for k in range(1, n+1):
for C in range(1, W+1):
if w[k] > C: # 装不下
B[k][C] = B[k-1]