数字猜谜游戏扭曲

时间:2013-01-09 04:02:49

标签: performance algorithm random numbers

通常情况下,如果猜测猜测是大于还是小于秘密数,则给出一些秘密数字的数字猜谜游戏算法将只是二进制搜索算法的修改。假设密码为13.算法将尝试1(小于13),2(小于13),4(小于13),8(小于13),16(大于13,回溯),10(小于13),13(等于秘密,停止。)

但是,如果不知道猜测是小于还是大于秘密数,并且唯一的状态是否相等,该怎么办?什么算法最有效?当然不是暴力强迫...

编辑:对于这两种情况,数字可能是上限和下限。

4 个答案:

答案 0 :(得分:1)

嗯,你得到的信息是答案不正确。由于这是唯一可用的信息,我认为蛮力将是唯一的方法。你也可以从零开始然后上去。

答案 1 :(得分:1)

我不确定您对此类问题的性能提升程度。正如大多数人所建议的那样,没有重要的方法来改善O(n)的最坏情况。您还可以坚持使用二进制搜索方法,其中每个不等的猜测最初被认为是小于操作'<'一旦这个列表用尽,你可以将每个不等的猜测视为大于操作>。在玩“猜数字游戏”的实际场景中,我相信这“可能”比蛮力顺序更好。

一般来说,如果我们能够找到一种能够确定地猜测最小猜测次数的算法,我相信世界各地的很多游戏很快就会多余:)

答案 2 :(得分:0)

如果等于/不等于你得到的唯一信息,那么没有算法可以提供比蛮力更好的平均情况或更好的最坏情况性能(即从下限开始并一直工作到上限)

为了获得更好的平均案例性能,您需要一些额外的信息。至少有一些统计数字,例如只有10%的秘密数字永远低于20'等,然后可以用来引出更好的平均案例表现(在这个例子中,可能是通过在21开始搜索)

即便如此,最坏情况的表现仍然不会比蛮力更好。

答案 3 :(得分:0)

如果你想象一个对手实际上并没有对这个数字做出任何想法,那么你可以看到你可能需要依次询问每个数字。他们可以简单地说出“错误的答案”,直到你猜到了所有可能的数字,并且他们的答案可以是真的,基于你猜测的最后一个数字的初始选择。