我在这个问题上困了很长一段时间,这基本上是逆向工程牛和牛的游戏。http://rosettacode.org/wiki/Bulls_and_cows我不能为下面给出的问题开发逻辑,如果你能想到一个解决方法,请发表同样的评论。
问题陈述:
给定几个线索词( ABCD/DBCA等形式)和每个词的牛和牛的数量,程序应该能够通过评估给定的线索词来计算出实际的词,并生成输出的秘密词。
测试用例:
输入:4
DBCC 0 2
CDAB 2 1
CAAD 1 2
CDDA 2%0
输出: BDAA
发布于 2012-07-22 01:49:02
这个想法是为了减少可能的解决方案的空间。在开始之前,所有4^4组合都是可能的。在你阅读了第一条线索DBCC 0 2之后,你可以消除一些可能的解决方案,在这个特定的例子中,你可以消除所有第一个位置有D的状态,所有第二个位置有B的状态,依此类推。只要排除所有不“适合”当前线索的可能解决方案即可。
对每条线索都这样做,直到只剩下一个解决方案。当然,另一个有趣的问题是如何生成好的线索模式。
发布于 2015-03-03 12:54:49
我这样做的方法是: 1.生成所有可能的单词,将它们放在一个列表(数组)中2.随机选择其中一个(第一个问题)并询问线索3.获取答案(假设答案为2,1) 4.开始将该问题与列表中的最后一个单词进行比较5.如果它们给出相同的线索:计算它们的数量,将它们放在列表的最后一个单词中
https://stackoverflow.com/questions/11594472
复制相似问题