动态规划将问题分成小问题,并先着手解决这些小问题。
《算法图解》中的一个例子:
假设你是个小偷,背着一个可装4磅东西的背包。你可偷窃的商品有如下3件。
音响 | 笔记本电脑 | 吉他 |
3000美元 | 2000美元 | 1500美元 |
4磅 | 3磅 | 1磅 |
为了让盗窃的商品价值最高,你该选择哪些商品?
代码实现:
import numpy as np
def bag(value,weight,capacity,n):
calculateTable=np.zeros((n,capacity),dtype=np.int32)
for j in range(capacity):
if weight[0]<=j+1:
calculateTable[0,j]=value[0]
else:
calculateTable[0,j]=0
for i in range(1,n):
for j in range(capacity):