鱼C论坛

 找回密码
 立即注册
查看: 4488|回复: 39

[已解决]Python:每日一题 329

[复制链接]
发表于 2020-2-11 18:55:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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 件物品放进背包。


欢迎大家一起答题!
最佳答案
2020-2-11 23:26:31
本帖最后由 fan1993423 于 2020-2-11 23:34 编辑
  1. def fun329(s,v,c):
  2.     list_rel=sorted(list(zip(v,c)),key=lambda x:x[0],reverse=True)
  3.     copy_s,count,result,length=s,0,0,len(list_rel)
  4.     for i in range(length):
  5.         for j in range(i,length):
  6.             s-=list_rel[j][1]
  7.             if s>=0:
  8.                 count+=list_rel[j][0]
  9.             else:
  10.                 s+=list_rel[j][1]
  11.         result=max(count,result)
  12.         count,s=0,copy_s
  13.     return result if result>0 else '背包太小,装不下任何东西'
复制代码

我不知道要不要考虑背包装不下任何东西的情况,为了保守起见,还是多加个判别式

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-12 13:52:50 | 显示全部楼层

输入大数据超时
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 13:53:33 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:21:33 | 显示全部楼层

输入大数据超出内存限制
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:22:40 | 显示全部楼层
坑得飞起 发表于 2020-2-11 22:01
def func(s,v,c):
    danjia, ans =[], 0
    for i in range(len(c)):

解答错误

输入:
  1. s = 195387950,
  2. v = [277996895,67034365,215265173,17927245,196665561,122553408,229181848,37953684,130611629,18096518,221937650,16569090,215131206,246680015,75894559,177999561,249070738,321264238,110845985,176753214],
  3. s = [228482420,301972492,81534843,235620330,102486915,234004708,18881095,194477148,60832041,118314582,292428017,74861428,43938149,86992501,239732394,193891049,112838218,127944264,276821750,172241156]
复制代码

输出:690993069
预期结果:765577292
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:26:30 | 显示全部楼层
William4869 发表于 2020-2-11 22:10
无脑深搜遍历玩法,感觉会超时,,回头我去看看动态规划是个什么东西

超时
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:27:10 | 显示全部楼层
fan1993423 发表于 2020-2-11 23:26
我不知道要不要考虑背包装不下任何东西的情况,为了保守起见,还是多加个判别式

60 ms
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:28:05 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:28:32 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:30:58 | 显示全部楼层
ouyunfu 发表于 2020-2-12 01:07
s = 10
v = [1,2,3,4]
c = [3,5,7,3]

会超时
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:31:37 | 显示全部楼层
TJBEST 发表于 2020-2-12 11:57
第二个版本,背包求解,没用递归,挺快的

超出内存限制
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 14:32:12 | 显示全部楼层
TJBEST 发表于 2020-2-11 23:31
先来个简单的 背包问题的分治算法 我忘了 先用这个试试 分治算法我再看看
#给出一个非负整数 s  ...

超时
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 15:08:42 | 显示全部楼层
fan1993423 发表于 2020-2-12 15:07
是不是只有我一个没有超时啊

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 16:15:02 | 显示全部楼层
TJBEST 发表于 2020-2-12 15:27
超出内存?我的空间 是o(n)的 n是个数 不应该吧

因为 n 很大
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 19:33:39 | 显示全部楼层
TJBEST 发表于 2020-2-12 17:19
您在试试这个,我尝试缩小了点空间

会超时
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-1 04:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表