A25736. 编程实现:小蓝桌子上摆放着一个容积为m的书包及n件不同的商品,且每件商品上都标有商品的体积和商品的价值。小蓝要满足以下要求挑选商品装入书包中要求1:挑选的商品总体积不超过书包的容积;要求2:挑选的商品商品总价值最大。请你帮助小蓝计算出能装入书包的商品的最大价值。输入描述:第一行输入两个正整数m和n,m表示书包的容积,n表示商品的数量。两个正整数之间一个英文逗号隔开第二行输入n个正整数表示商品的体…
填空题
中等
知识点
题目描述
编程实现:
小蓝桌子上摆放着一个容积为m的书包及n件不同的商品,且每件商品上都标有商品的体积和商品的价值。
小蓝要满足以下要求挑选商品装入书包中
要求1:挑选的商品总体积不超过书包的容积;
要求2:挑选的商品商品总价值最大。
请你帮助小蓝计算出能装入书包的商品的最大价值。
输入描述:
第一行输入两个正整数m和n,m表示书包的容积,n表示商品的数量。两个正整数之间一个英文逗号隔开
第二行输入n个正整数表示商品的体积,正整数之间一个英文逗号隔开
第三行输入n个正整数表示商品的价值,正整数之间一个英文逗号隔开(商品价值的输入顺序对应商品体积输入顺序)
输出描述:
输出装入书包的商品的最大价值
样例输入:
11,3
2,6,4
1,5,2样例输出:
7参考答案
#参考答案1
import itertools
str1 = input()
str2 = input()
str3 = input()
str1 = str1.split(",")
str2 = str2.split(",")
str3 = str3.split(",")
grp1 = []
for i in str1:
grp1.append(int(i))
grp2 = []
for i in str2:
grp2.append(int(i))
grp3 = []
for i in str3:
grp3.append(int(i))
bag_vol = grp1[0]
items = []
for i in range(0,len(grp2)):
items.append([grp2[i],grp3[i]])
max_vlu = 0
import itertools
for i in range(1,len(grp2)+1):
comb = itertools.combinations(items,r=i)
for j in comb:
vu = 0
wt = 0
for k in j:
wt += k[0]
vu += k[1]
if wt <= grp1[0] and vu>max_vlu:
max_vlu = vu
print(max_vlu)
#参考答案2
rj = int(input().split(',')[0])
tj = list(map(int, input().split(',')))
jz = list(map(int, input().split(',')))
jzh = 0
jzmax = 0
while rj >= min(tj):
oi = 0
for i in range(len(tj)):
if jz[i] > jzmax:
jzmax = jz[i]
oi = i
if rj >= tj[oi]:
jzh += jzmax
rj -= tj[oi]
jzmax = 0
del tj[oi]
del jz[oi]
if tj == []:
break
print(jzh)答案解析
评分标准:
7分:能正确输出一组数据;
7分:能正确输出两组数据;
7分:能正确输出三组数据;
7分:能正确输出四组数据;
7分:能正确输出五组数据。
上一题
下一题