来自无敌波哥: http://my.oschina.net/u/579674/blog/73483 这个是腾讯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 无论是偏大或者偏小,都不会有提示