
def bag(n,c,w,v):
res=[[-1 for j in range(c+1)]
for i in range(n+1)]
for j in range(c+1):
res[0][j]=0
for i in range(1,n+1):
for j in range(1,c+1):
res[i][j]=res[i-1][j]
if j>=w[i-1] and res[i][j]<res[i-1][j-w[i-1]]+v[i-1]:
res[i][j]=res[i-1][j-w[i-1]]+v[i-1]
return res
def show(n,c,w,res):
print('最大价值为:', res[n][c])
x = [False for i in range(n)]
j = c
for i in range(1, n + 1):
if res[i][j] > res[i - 1][j]:
x[i - 1] = True
j -= w[i - 1]
print('选择的物品为:')
for i in range(n):
if x[i]:
print('第', i, '个,', end='')
print('')
if __name__ == '__main__':
# n = int(input("物品的数量:"))
c = int(input("书包的承受量:"))
w = [2, 2, 6, 5, 4] #每个物品的重量
v = [6, 3, 5, 4, 6] #每个物品的价值
n = len(w) #物品的数量
res = bag(n, c, w, v)
show(n, c, w, res)