答案为('ABDE', ( 135 , 155 ))
时间: 2023-12-17 14:03:11 浏览: 24
非常抱歉,我之前的回答有误。我重新给出代码实现:
```
weight = [10, 40, 30, 50, 35, 40, 30]
value = [35, 30, 16, 50, 40, 10, 25]
capacity = 150
n = len(weight)
dp = [[0 for _ in range(capacity+1)] for _ in range(n+1)]
for i in range(1, n+1):
for j in range(1, capacity+1):
if j < weight[i-1]:
dp[i][j] = dp[i-1][j]
else:
dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i-1]]+value[i-1])
# 记录选择哪些物品可以获得最大价值
res = []
i, j = n, capacity
while i > 0 and j > 0:
if dp[i][j] != dp[i-1][j]:
res.append(i-1)
j -= weight[i-1]
i -= 1
res.reverse()
# 输出结果
max_weight = sum([weight[i] for i in res])
max_value = dp[n][capacity]
print((''.join([chr(ord('A')+i) for i in res]), (max_weight, max_value)))
```
输出结果为:
```
('ABDE', (135, 155))
```
其中,输出结果中的第一个元素为选择的物品,将索引转化为字母即可;第二个元素为选择的物品的重量和价值。