这道题本身是没有什么好讲的,按照题目的要求来即可,代码如下:
这道题有趣的部分是在于follow up,如果我们只准用1111-9999范围中的数,我们如何用最少的次数来猜出给定的数。这道题其实本质上就是和Guess the Word一样了,我们仍然是采用minimax的思路:
- 对于每一个数,计算所有的match可能{0A1B, 0A2B, 0A3B, 0A4B, 1A0B... 3A0B, 3A1B}情况下可以eliminate的数的数量,取最少的为score,即min。
- 对于所有在candidate里的数,我们取score最大的,即max。
由于计算量非常大,前几个数我们可以随机取,然后在用这个思路,我实现的时候第一个数取1234,之后在按照这个思路来,计算量依旧很大,第一个iteration耗时很久。实际跑了之后的输出如下:
代码如下:
代码如下:
No comments:
Post a Comment