Facebook编程挑战

Ama*_*hal 7 c++ algorithm

Mastermind是两个玩家的游戏.在开始的时候,第一个球员决定密钥,这是一个序列(s1,s2,...sk),其中0 < si <= n,然后第二个玩家使得回合,每个猜测是形式的猜测(g1,g2, ...gk),而每次猜测后第一个球员计算猜比分.猜测的分数等于我们拥有的i的数量gi = si.

例如,如果密钥是(4,2,5,3,1)并且猜测是(1,2,3,7,1),那么分数是2,因为 g2 = s2g5 = s5.

给定一系列猜测和每个猜测的分数,您的程序必须确定是否存在至少一个生成这些精确分数的密钥.

输入

输入的第一行包含一个整数Ç (1 <=C <= 100).C测试案例如下.每个测试用例的第一行包含三个整数n,kq.(1 <=n,k <=11, 1<=q<=8).接下来的q行包含猜测.

每个猜测由k个整数组成,gi,1, gi,2,....gi,k由单个空格分隔,然后是猜测bi的分数 (1 <= gi,j <=n for all 1 <=i <=q, 1 <=j <=k; and 0 <= bi <=k )

产量

对于每个测试用例,如果至少存在生成那些精确分数的密钥,则输出"是"(不带引号),否则输出"否".

样本输入

2
4 4 2
2 1 2 2 0
2 2 1 1 1
4 4 2
1 2 3 4 4
4 3 2 1 1
Run Code Online (Sandbox Code Playgroud)

样本输出

Yes
No
Run Code Online (Sandbox Code Playgroud)

除了暴力之外,我无法想到任何其他事情,即通过生成所有可能的密钥并检查所有猜测的相应分数复杂性是非常高的将做大约(11 ^ 11)*8次操作

Plz建议如何及时做到这一点?

时间限制:3秒

Sin*_*all 2

这与公牛和奶牛的游戏非常相似。网络上有很多关于它的信息,并且在 wiki 文章中您可以找到实现的链接。让它们适应您的具体挑战应该相当容易。