01背包问题一维数组优化的关键在于在优化中保证状态转移方程成立,即每次计算时要保证能获取到需要的前一状态。这也是逆序的原因
#!/usr/bin/python
m = int(raw_input("get m as the max bag size:"))
n = int(raw_input("get n as the goods tots:"))
print("bag max store: %d, goods tots: %d" % (m, n))
table = [0]*(m+1)
p = [0]
w = [0]
for i in range(1, n+1):
weigth = int(raw_input("get weigth:"))
value = int(raw_input("get val:"))
w.append(weigth)
p.append(value)
print p
print w
#print table
for row in range(1, n+1):
for col in range(m, 0, -1):
if(w[row] <= col and table[col - w[row]] + p[row] > table[col]):
table[col] = table[col - w[row]] + p[row]
print "max value can store:" + str(table[m])