二分查找
猜数游戏的策略——二分查找
一个优秀的例子
从数字1开始慢慢地一个一个地问实在是比较笨,我们不难想到一些方法:询问100、200、300、400……来确定答案位于哪个区间内,然后在这个区间内故技重施(假设答案在300和400之间),询问310、320、330、340……来缩小这个区间。当这个区间足够小的时候,我们再对区间中的每个数字挨个询问。
实际上,每次询问当前区间的中点是最优的策略。我们根据主持人的回答来确定最终答案是位于哪半边区间里面。由于我们每次会把当前区间的长度大约除以2,因此我们在大约10次询问之后,就一定能知道最终答案。下面这个游戏记录就展示了这个策略。
如何用程序语言描述这样一个策略?为什么这种策略是最好的呢?请先思考思考~
通用的游戏策略
用伪代码描述这样一个策略,就是下面这段:
int L = 区间左端点;
int R = 区间右端点;