import numpy
as np
n=
5
c=
10
v={
0:
2,
1:
2,
2:
6,
3:
5,
4:
4}
w={
0:
6,
1:
3,
2:
5,
3:
4,
4:
6}
d=np.zeros([n+
1,c+
1])
get_ipython().magic(
'pdb on')
for i
in range(n+
1):
for j
in range(c+
1):
if i!=
0:
d[i][j]=d[i-
1][j]
if (i>
0):
if (j>=v[i-
1]):
if d[i][j]<(d[i-
1][j-v[i-
1]]+w[i-
1]):
d[i][j]=d[i-
1][j-v[i-
1]]+w[i-
1]
print(
'最大能获得的宝石价值为:',d[n][c])
label=np.zeros([n])
for i
in range(n,
0,-
1):
if i-
1>=
0:
if d[i][j]>d[i-
1][j]:
label[i-
1]=
1
j=j-v[i-
1]
print(label)
print(
1!=
1)
Reference: http://www.hawstein.com/posts/dp-knapsack.html