3

我在这个问题上卡了很长时间,它基本上是逆向工程牛牛游戏。在此处阅读更多信息:http ://rosettacode.org/wiki/Bulls_and_cows 我无法为下面给出的问题开发逻辑,如果您能想到解决方法,请发表相同评论。

问题陈述:

给定很少的线索词(形式为 ABCD/DBCA 等)以及每个词的奶牛和公牛的数量,程序应该能够通过评估给定的线索词来计算出实际的词并生成输出的秘密词。

测试用例:

输入:4
DBCC 0 2
CDAB 2 1
CAAD 1 2
CDDA 2 0

输出:BDAA

4

2 回答 2

3

这个想法是减少可能解决方案的空间。在开始之前,所有 4^4 组合都是可能的。阅读第一条线索 [DBCC 0 2 ] 后,您可以消除许多可能的解决方案,在这个特定示例中,您可以消除所有首先具有 D 的状态,所有具有 B 在第二位的状态等等在。只需消除所有不“适合”当前线索的可能解决方案。

对每条线索都这样做,直到只剩下一个解决方案。另一个有趣的问题当然是如何生成好的线索模式。

于 2012-07-21T17:49:01.817 回答
0

我这样做的方法是: 1. 生成所有可能的单词,将它们放在一个列表(数组)中 2. 随机选择其中一个(第一个问题)并询问线索 3. 取答案(假设是 2,1 ) 4. 开始将该问题与第一个,第二个,...,与列表中的最后一个单词进行比较 5. 如果它们给出相同的线索:计算它们,plac

于 2015-03-03T04:54:48.753 回答