|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2020-2-11 18:58 编辑
今天的题目:
给出一个非负整数 s 代表背包容量。给出 len(c) 件物品,第 a 件物品的价值为 v[a],体积为 c[a]。
求这个背包最多能装多少价值的物品,返回总价值。
说明:len(c) == len(v)。
注意:每件物品只能用一次。
示例 1:
输入:s = 10, v = [1,2,3], c = [3,5,7]
输出:4
解释:将第 0 件和第 2 件物品放进背包。 示例 2:
输入:s = 10, v = [1,5,3], c = [4,5,7]
输出:6
解释:将第 0 件和第 1 件物品放进背包。
 欢迎大家一起答题! 
本帖最后由 fan1993423 于 2020-2-11 23:34 编辑
- def fun329(s,v,c):
- list_rel=sorted(list(zip(v,c)),key=lambda x:x[0],reverse=True)
- copy_s,count,result,length=s,0,0,len(list_rel)
- for i in range(length):
- for j in range(i,length):
- s-=list_rel[j][1]
- if s>=0:
- count+=list_rel[j][0]
- else:
- s+=list_rel[j][1]
- result=max(count,result)
- count,s=0,copy_s
- return result if result>0 else '背包太小,装不下任何东西'
复制代码
我不知道要不要考虑背包装不下任何东西的情况,为了保守起见,还是多加个判别式
|
|