zed 发表于 2008-10-6 07:58:17

猜数游戏

在http://topic.csdn.net/u/20080926/10/934e89d4-0936-45df-8fb8-4885a0f86f9a.html 有一个猜数字游戏:

猜数游戏如下:
人随意想一个四位数,四位数两两不相同,首位可为0,由计算机猜。
猜的步骤如下:
计算机给出一个四位数,人来回答这计算机的四位数中,有多少个是数字猜对,且位置也猜对的,有多少个是数字猜对,但位置为未猜对的。多次重复此步骤,直至计算机猜对为止。
例如:人产生的四位数为:1234,计算机第一次猜2534,这时人应给出回答:有2个数字猜对了,且位置也对(3和4),有1个数字猜对了,但位置不对(2),简记为2A1B。(A表示数字对且位置对,B表示数字对但位置不对)。第二次计算机猜2789,这时人应回答0A1B(因为没有一个数字是数字对且位置也对,所以写0A,数字2猜对但位置不对,写作1B)。直至计算机猜中1234.

我们可以有下面等一系列问题:
i)计算机该如何猜测使得最差情况的猜测次数最小,这个最小次数是多少?
ii)计算机如何猜测使得4次以内能够猜出正确答案的概率最大,这个概率是多少?
iii)计算机如何猜测使得5次以内能够猜出正确答案的概率最大,这个概率是多少?
iv)计算机如何猜测使得平均猜测次数最少,这个平均值是多少?

sunwukong 发表于 2008-10-6 08:20:17

下面的这个链接,已求出平均猜测次数最小的最优搜索树

http://www.javaworld.com.tw/jute/post/view?bid=35&id=138372&sty=1&tpg=1&age=0


1 次猜中次数:1
2 次猜中次数:7
3 次猜中次数:62
4 次猜中次数: 691
5 次猜中次数:2444
6 次猜中次数:1756
7 次猜中次数:79

总猜测次数:    26274
平均猜测次数: 5.213095

由此可以回答最后一个问题:

iv)计算机如何猜测使得平均猜测次数最少,这个平均值是多少

平均值 = 26274 / 5040 = 5.213095



另外,这个链接也解决了第一个问题:

i)计算机该如何猜测使得最差情况的猜测次数最小,这个最小次数是多少?

答案: 7

无心人 发表于 2008-10-6 08:24:22

:lol

想起来某个泡菜网络游戏中的小游戏
就是这个
不过对手的位置交换了

shshsh_0510 发表于 2008-10-6 16:44:48

上边的链接中,讨论的很精彩,但那个最小次数7应该不对

〇〇 发表于 2009-10-13 21:14:25

bookmark

qianyb 发表于 2010-2-27 15:04:59

先收藏,等有空时弄一个看看

keeya0416 发表于 2010-3-17 17:06:20

围观 学习
题目都很有意思啊
就是我没说话的份了哎
努力学习了
页: [1]
查看完整版本: 猜数游戏