由于本人算法比较垃圾,动态规划 和 递归解决这个问题完全没有思路,于是用了一个十分投机取巧的解决办法,简单记录一下
from itertools import permutations # 引入全排列函数
max_w = 20 # 设置最大重量
all_v = [] # 全部的价值
def thief(aw, av, iter):
tr = [[2, 3], [3, 4], [4, 8], [5, 8], [9, 10]] # 这是每件物体重量和价值
# 循环每次的迭代顺序
for i in iter:
w = tr[i][0] # 提出w
v = tr[i][1] # 提出v
# 如果 全部的重量大于最大重量
if aw + w >= max_w:
all_v.append(av) # 添加进 all_v
return av
else:
aw += w # 增加aw
av += v # 增加av
for i in permutations([0, 1, 2, 3, 4]): # 迭代每次次序
thief(0, 0, i) # 将次序喂进函数
print(max(all_v)) # 打印最大的