鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] 小练习20160201:称量乒乓球

[复制链接]
发表于 2016-2-15 17:05:54 | 显示全部楼层
本帖最后由 zooo 于 2016-2-15 18:05 编辑

@DingRan 先赞下,高数666666~,但还没太理解你所说最优算法,数学知识都还给老师了,,而且我试了几次 '平均三分法' 找球的次数在4.27次附近呀
进行100000轮找重球所用的时间为 4.858,平均4.271次可以找出重球
输入一个字符结束
>>> ================================ RESTART ================================
进行100000轮找重球所用的时间为 5.041,平均4.269次可以找出重球
输入一个字符结束
----------------------------------- -----------------------------------------
突然发现是我的计数器少算了一次,尴尬了
刚刚改好了,找球次数是不会低于4.3次
你试试用地板除代替round,这种简单粗暴的方式好像比用round()找球的次数少,我也不知道为什么
triVer = (end-beg)//3
#triVer = round((end - beg)/3)#分片长度
-----------------------------------------------
使用地板除的测试结果
第一次:进行100000轮找重球所用的时间为 4.968,平均4.310次可以找出重球
第二次:进行100000轮找重球所用的时间为 4.883,平均4.311次可以找出重球
使用round()测试结果
第一次:进行100000轮找重球所用的时间为 6.379,平均4.401次可以找出重球
第二次:进行100000轮找重球所用的时间为 6.389,平均4.402次可以找出重球
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2016-2-15 17:28:22 | 显示全部楼层

回帖奖励 +3 鱼币

提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-15 22:53:43 | 显示全部楼层
本帖最后由 DingRan 于 2016-2-15 22:59 编辑

@zooo 谢谢哈哈~后面的最优算法写的仓促了,确实说的不是很清楚诶~地板除比round更优只是一个个例:当T==100时,地板除优于round,当T!=100时就未必啦~比如T==92时,round恰好是最优算法,地板除则不是。总之,地板除或者“屋顶除”或者round本身跟最优算法没什么关系,只是有时候碰巧和最优算法相等。有时候这三个都不是最优算法,比如T==18时,明明可以整除,最优算法却是5或者7。T==100时,27,28,29,31,32,33,35,36,37都是最优。最优算法这东西很诡异呐~

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10 热爱鱼C^_^

查看全部评分

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

使用道具 举报

发表于 2016-2-15 23:15:12 | 显示全部楼层
@DingRan 哦哦~ 受教了,严谨的分析对编程来讲很重要,哈哈~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-17 16:48:29 | 显示全部楼层

回帖奖励 +3 鱼币

最近有事情,先拿了鱼币以后再来支持活动吧~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-19 12:19:51 | 显示全部楼层
wei_Y 发表于 2016-2-5 13:36
写完才发现二分法是次优解,占坑待编辑。

在函数里生成随机数,赞~
答案很精炼~不愧是版主~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-19 16:17:51 | 显示全部楼层
错过了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-23 10:22:27 | 显示全部楼层

回帖奖励 +3 鱼币

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

使用道具 举报

发表于 2016-2-23 11:50:18 | 显示全部楼层
666666666666666666666666666666厉害
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-2 07:58:18 | 显示全部楼层

回帖奖励 +3 鱼币


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

使用道具 举报

发表于 2016-3-5 14:30:12 | 显示全部楼层

回帖奖励 +3 鱼币

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

使用道具 举报

发表于 2016-3-5 21:54:10 | 显示全部楼层
新人留名~ mark
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-24 09:17:35 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-21 11:59:08 | 显示全部楼层
挖坟挖坟
  1. def 称重(数组):
  2.     数组长度=len(数组)
  3.     长三分=数组长度//3
  4.     长余留=数组长度%3
  5.     数组1=数组[0:长三分]
  6.     数组2=数组[长三分:长三分*2]
  7.     数组3=数组[长三分*2:长三分*3]
  8.     if sum(数组1)>sum(数组2):
  9.         return 称重(数组1)   
  10.     elif sum(数组1)<sum(数组2):
  11.         return 称重(数组2)+长三分
  12.     elif sum(数组1)<sum(数组3):
  13.         return 称重(数组3)+长三分*2
  14.     elif 数组[数组长度-1]<数组[数组长度-2]:
  15.         return 数组长度-1
  16.     else:
  17.         return 数组长度

  18. def 生成(长度):
  19.     import random
  20.     a=[]
  21.     b=random.randint(0,长度-1)
  22.     for i in range(长度):
  23.         a.append(1)
  24.     a[b]+=1
  25.     return a
  26. print(称重(生成(30)))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-2 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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