【发布时间】:2020-08-04 00:53:06
【问题描述】:
问题要求我给出输入权重、我可以保留的项目数和权重数组。它要求我计算我可以携带的最大重量(0-1 背包:动态规划)
W:输入权重n:项数wt:权重数组
我在执行此代码时收到第 10 行的索引错误。在我看来,这似乎是一个非常愚蠢的错误,经过数小时的运行测试用例,我无法弄清楚。 我搜索并发现的解决方案似乎是为我写 t[i][j]
的每个地方取值 t[j][i]# Uses python3
import sys
def optimal_weight(W, wt, n):
t = [[0 for x in range(n+1)] for y in range(W+1)]
for i in range(1,n+1):
for j in range(1,W+1):
if wt[i-1]<=j :
t[i][j]= max ( wt[i-1] + t[i-1][j-wt[i-1]] , t[i-1][j])
else :
t[i][j]= t[i-1][j]
return t[n][W]
if __name__ == '__main__':
arr = list(map(int, input().split()))
W = arr[0]
n = arr[1]
wt= list(map(int, input().split()))
print(optimal_weight(W, wt,n))
【问题讨论】:
标签: python-3.x list dynamic-programming knapsack-problem index-error