我在这个问题上停留了很长一段时间,它基本上是逆向工程公牛和奶牛游戏。 在这里阅读更多:http://rosettacode.org/wiki/Bulls_and_cows 我无法为下面给出的问题制定逻辑,如果您能想到解决方法,请发表评论。
问题陈述:
给定几个线索词(形式为 ABCD/DBCA 等)和每个词的奶牛和公牛的数量,程序 应该能够通过评估给定的线索词并生成输出 secret 词来计算出实际的词。
测试用例:
输入:
4
DBCC 0 2
CDAB 2 1
计算机辅助设计学院 1 2
CDDA 2 0
输出: BDAA
最佳答案
想法是减少可能解决方案的空间。在开始之前,所有 4^4 组合都是可能的。阅读第一条线索 [DBCC 0 2 ] 后,您可以排除许多可能的解决方案,在这个特定示例中,您可以排除所有首先具有 D 的状态,所有具有第二个 B 的状态等等在。只需排除所有不“符合”当前线索的可能解决方案即可。
对每条线索都这样做,直到只剩下一个解决方案。另一个有趣的问题当然是如何生成好的线索模式。
关于algorithm - 使用给定的 n 个字符串输入生成 Bulls 和 Cows 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11594472/