题目描述
1.d = [[0 for _ in range(N)]for _ in range(N)]
2.d = [[0]N]N
两种写法的区别
第一种:每一行是独立的
第二种:每一行是同一个列表的引用,修改一个会影响其他值
Python 代码
N = 1010
worth = [0]*N
vols = [0]*N
d = [[0 for _ in range(N)]for _ in range(N)]
# d = [[0]*N]*N 不能这样写
if __name__ == '__main__':
n,v = map(int,input().split())
for i in range(1,1+n):
vi,wi = map(int,input().split())
vols[i] = vi
worth[i] = wi
for i in range(1,1+n):
for j in range(1+v):
if j>=vols[i]:
d[i][j] = max(d[i-1][j],d[i-1][j-vols[i]]+worth[i])
else:
d[i][j] = d[i-1][j]
print(d[n][v])
```