腾讯2012 笔试题-----A、B两人玩猜字游戏

这个是腾讯2012年暑期实习生招聘的一道笔试题,考试的时候也没仔细思考,没作出来。╮(╯_╰)╭。如今回过来想一想,这题仍是蛮有意思的,本人给出了一种解法,不能保证100%正确,但愿你们看到了提出本身的看法。

A、B两人玩猜字游戏,游戏规则以下:
A选定一个 [1,100]之间的数字背对B写在纸上,而后让B开始猜;
若是B猜的偏小,A会提示B此次猜的偏小;
一旦B某次猜的偏大,A就再也不提示,这次以后B猜的偏小A也不会再提示,只回答猜对与否。
请问:B至少要猜(           )次才能保证猜对?在这种策略下,B第一次猜想的数字是(           )。


首先阅读题目,一个很重要的信息点就是: 一旦B某次猜的偏大,A就再也不提示,这次以后B猜的偏小A也不会再提示,只回答猜对与否 。若是没有这个条件,或者说改变这个条件,改成: 若是B猜的偏大,A会提示B此次猜的偏大 那么相信你们都会给出答案,那就是用二分法,只须要7次就能够保证猜对了。

可是如今的条件变了,若是B猜的偏大,那么不提示,因此咱们得出结论就是:若是猜的偏大,只能一个一个往下猜。例如 A写的数是91,你猜了100,偏大了,那么你须要猜99,98,97一直到91。这样就保证对了。这里就不能猜95来节省次数了,由于猜了95 不管是偏大或者偏小,都不会有提示,因此95两边都是须要猜的。从100到91须要猜10次。

我从上面能够看出,当咱们猜的数偏大了以后,须要一个合理的下届来限定往下猜的次数,从下面两个例子来讲明每次猜的间隔也是很是重要。
例1:咱们要猜的数仍是91,咱们第一次猜90(偏小有提示),第二次猜100(偏大无提示),因而从100一个一个往下猜,这里90就成为了下届,因此咱们从100往下猜,最多须要猜10次就能够保证猜到了(10次中包括猜100这一次),这里间隔为10。
例2:咱们要猜的数仍是81,第一次猜80(偏小有提示),第二次咱们猜100(间隔20),这时就须要从100一个一个往下猜20次才能猜到(20次中包括猜100这一次)。这里间隔为20。

咱们要获得答案,其实就是须要肯定这个间隔,和第一次猜的数字。
用n来表示间隔,须要猜的至少的次数 相似于此公式的最小值 n+100/n。很容易获得n为10的时候最小。后面解释这个公式的含义。咱们先来看看我给出的答案的一个例子,理论的东西我也表达不清楚。

例3:咱们要猜的数字是91,咱们第一步猜10,以10为间隔猜。
第一步10(偏小有提示),第二步20(偏小有提示),第三步30(偏小有提示),第四步40(偏小有提示),……,第九步90(偏小有提示),第十步100( 偏大无提示),所以一个一个往下猜,第十一步99,第十二步98,第十三步97,……,第十九步91 命中。因此这里须要19步就猜中了。19步也是咱们的答案 ,须要保证19次才能100%的猜到。找不到另一个数字,须要19步以上的。看下例。

例4:咱们要猜的数字是81,咱们第一步猜10,以10为间隔猜。
第一步10(偏小有提示),第二步20(偏小有提示),第三步30(偏小有提示),第四步40(偏小有提示),……,第八步80(偏小有提示),第九步90( 偏大无提示),所以一个一个往下猜,第十步89,第十一步88,第十二步97,……,第十八步81 命中。只需18步小于例1的19步。

例5:咱们要猜的数字是1,咱们第一步猜10,以10为间隔猜。
第一步10(偏大无提示),所以一个一个往下猜,第二步9,第三步8,……,第十步1 命中。只需10步就能够仍是小于19步。

题目要求咱们要保证猜对,就是要100%猜中,因此应该是 要猜中1-100 全部数字所需次数的最大值,即19。这个是须要注意的。

 再来讲说 上面提到的公式,100/n就表示以10为间隔最多须要猜的次数,也就是咱们例3中,猜的这几个步骤:10,20,30,40,……100。而n就表明从100猜到91须要的步骤,也就是间隔。
由于n + 100/n  >=  20  其中100这里咱们重复了,因此是19次。

在实验过程当中,发现第一步猜的数字是不固定的,1-10中的任意一个都可。你们能够试试的。
例如:第一步猜1,咱们要猜的数字是82,按照例3的方法,也是19次。

因此最终我给出的答案( 这种方法是错误的): B至少要猜( 19)次才能保证猜对?在这种策略下,B第一次猜想的数字是( 1到10任一都可)。

很是感谢 6楼的 @大傻师,给出了更完美的方案, 我这种方案的只考虑到了间隔固定的状况下,通过@大傻师提点确实当间隔不固定的状况下,还能减小猜须要的次数,下面是@大傻师给出的答案。

答案是14次,第一次猜的数字应该是9到14中任意一个数
假设第一个猜的数字是k1
若是第1次答案是偏小,那下一个就猜k2=k1+13,若是仍是偏小,再就是k3=k2+12,依次类推

若是哪次猜到答案是偏大了,就从那次猜的数字往下一个个猜,最坏状况就是14次。spa

例:若是第一个是9,那依次就是9,22,34,45,55,64,72,79,85,90,94,97,99,100.net

这题目确实锻炼人的脑子,开阔人的思惟,是个不错的题目。欢迎你们提出宝贵的意见 谢谢!!
相关文章
相关标签/搜索