常见的猜数字游戏,例如玩家A心中默记一个1-100之间的一个数字包括1和100.玩家B去猜测这个数字,规则如下:

1.当猜测的数字小于玩家A心中记的数字时,玩家A提示玩家B所猜测数字小了;

2.当猜测的数字大于玩家A心中记的数字时,玩家A提示玩家B所猜测数字大了;

3.当猜测的数组等于玩家A心中记的数字时,玩家A提示玩家B所猜测数字正确,游戏结束。

这个游戏的最好结果自然是1此猜中,但是最坏结果仍然可以通过计算得到,使用二分法的猜测方式就可猜测到正确的数字。

 

可是在腾讯的笔试题中将游戏规则公然篡改,规则如下:

1.当猜测的数字小于玩家A心中记的数字时,玩家A提示玩家B所猜测数字小了;

2.当猜测的数字大于玩家A心中记的数字时,玩家A提示玩家B所猜测数字大了,从此之后玩家A再也不给玩家B任何提示。

问题:

玩家B存在猜中数字的可能,问至少需要多少次才能够猜中数字。

通过了一些调查以后得到了一些这样的答案:

1.你猜;

2.百度才知道;

3.1次

4.8次

5.2次

我与朋友也做了一些互动的测试。

最好的情况猜了2次。他记的是我的学号17,我第一次猜他的学号9,他笑了;第二次就猜对了。

最坏的情况猜了19才。他记的是99,我第一次才12,之后每次都加11.

面对这样的结果我只能锁定一个范围,后来画了一个图:

公然被篡改的腾讯版猜数字_第1张图片

猜1算是一种无效的操作。

随后可以从图上的橙色去猜测,发现总能将数字锁定在两个橙色数字之间,然后在去猜测具体的数字。

猜测具体的数字:

猜测具体的数字的时候显然最多有10个,但是在猜测具体数字的时候是不会有提示的,所以二分法也不能起作用,因此在求最坏情况只能遍历这10个数字。因此猜测具体的数字需要10次。

现在考虑橙色数字的猜测次数。

         这个数字考虑最优情况,就是在猜12的时候就提示数字大了,这样就可以遍历1-11所有的数字,因此一共要猜测12次。

如果继续猜测12以后的橙色数字的时候自然次数就变大了,此时是10+(猜测橙色数字的个数)>=12。

最坏的情况下所猜测的数字是90-99之间这样要猜测的数字个数就变成了9+(猜测的具体的数字个数)<=19。