题目描述:
输入书包容积、物品数量、物品体积以及对应的价格
输入描述:
书包容积和物品数量
第一行输入书包容积和物品数量
第二行输入每个物品对应的体积
第三行输入每个物品对应的价格
输出描述:
书包内能放下的物品的最高价格
该题可以采用多种方法做解答,例如:贪心算法、动态规划算法等等。还有一种方法就是【按照单位价值量】对商品进行选择,也是一种贪心算法,把单位价值量高的商品添加进背包中,然后再将次之的放入进来,但是当单位价值量最高的商品添加的时候,需要进行比较商品的价值,选择高者添加进背包,想着比较容易,直接上代码,属于小白写的代码简单易懂~
m, n = input().split(',')
m, n = int(m), int(n)
vList = input().split(',')
pList = input().split(',')
value = []
for i in range(n):
vList[i] = int(vList[i])
pList[i] = int(pList[i])
value.append(pList[i]/ vList[i])
save = [vList, pList, value]
print(save)
def solve(m, n, value, save):
price = 0
while m > 0 and len(value) >= 1:
if len(value) == len(set(value)):
max_index = value.index(max(value))
else:
max_index = value.index(max(value))
for i in range(len(value)):
if value[i] == max(value) and save[1][i] > save[1][max_index]:
max_index = i
if m >= save[0][max_index]:
m = m - save[0][max_index]
price = price + save[1][max_index]
del value[max_index]
del save[0][max_index]
del save[1][max_index]
# print(save[0][max_index])
else:
break
return price
max = solve(m, n, value, save)
print(max)
运行效果测试如下: