查看: 1437|回复: 43

[IQ风暴] 读到最多的姓名

转载  已解决  简洁模式
发表于 2015-8-23 11:57:51 | 发自安卓客户端
啦啦啦~~~既然马上要开学啦 就来一道数学题吧,顺便刷一刷存在感,大家不要忘了我哦

以下是题目

读一长串名单,注意:有些名字可能会重复读到。你的任务就是找出重复最多遍的那个名字(如果该名字存在的话)
假设,你只有一个计数器,而你一次只能记住一个名字,那你该怎么办呢?
登录帐号可查看完整回帖内容

此回答在 2015-8-28 15:53 被选定为谜题答案

楼主| 发表于 2015-8-27 20:49:23
没人来啦那么出答案  答案如下
每当计数器上数是0(计数从此开始)时,你就记住当前听到的名字,同时把计数器上的数加到1.当计数器上的数比0大时,如果听到的名字和记忆中的名字一样,计数器上的数就增加,否则就减少,但必须记住的是同一个名字。
当然,最后在你头脑中的名字可能只出现过一次(比如,像 A、B、A、B、A、B、C 中C只出现了一次)。但是,如果一个名字出现超过了总数之半,那么这个名字最后肯定是被保存在你的记忆中。原因在于,当该名字处于被记忆状态时,计数器上的数总是加多于减。
如上 不太明白加粗的字什么意思。。。但原文参见 M.J.Fischer和S.L.Salzberg的文章《Finding a Majority Among n Votes》

爱不只甜美感动 于 2015-08-27 21:20:54 补充以下内容:

@Hundred-Rivers  答案已出~~~
登录帐号可查看完整回帖内容
发表于 2015-8-23 12:23:18
本帖最后由 meteorite 于 2015-8-23 12:39 编辑

不过中国只有87019个汉字 给每个汉字一个编码 每个编码不存在0,1,2用0将每一个字隔开,用1将每一个名隔开记录,直至记录完成,先用自己仅能记住一个名字的缓存空间记录第一个名字 然后查找个数,将个数用2括起来 例如 啦啦啦 这个名字3次 就是1090090090221 其中啦的编码是9
登录帐号可查看完整回帖内容
发表于 2015-8-23 13:07:28
我看到这个脑子不能控制的开始写程序语句。。救救我
登录帐号可查看完整回帖内容
发表于 2015-8-23 13:46:04
这应该说是算法问题....

然而题目对限制的表述..想再确定下..
计数器是不是一个只能置零及加一的变量?只能记住一个名字,只有一个计数器,那没有别的存储空间了?那放算法的地方能怎么用?一个for循环是不是需要一个计数器?所以连for嵌套都不允许?....
登录帐号可查看完整回帖内容
发表于 2015-8-23 13:49:26
是个算法问题 不过lz都说了 她认为这道题是数学题。。。所以不谈算法
登录帐号可查看完整回帖内容
发表于 2015-8-23 13:58:55
实际上可以用数字代表名字,不用那么复杂,完了以后再看看自己走过的路!
登录帐号可查看完整回帖内容
楼主| 发表于 2015-8-24 14:28:46 发帖际遇
喂喂难道就没有人么
尚未登录
您需要登录后才可以回帖 登录 | 加入学院