弦乐建设游戏的制胜策略
背景 爱丽丝和鲍勃玩的游戏叫构造二进制字。要玩游戏,您需要确定一个长度n >= 0,一G组长度为n二进制的单词(称为目标集)和一个长度n字符串(t其中包含字母Aand)B,称为回合顺序。游戏持续进行n几回合,然后依次选择i定义的玩家。游戏结束后,玩家将查看他们构建的二进制单词。如果在目标组中找到了这个词,爱丽丝将赢得比赛;否则,鲍勃获胜。t[i]w[i]wG 例如,让我们来解决n = 4,G = [0001,1011,0010]和t = AABA。爱丽丝得到第一回合,她选择了w[0] = 0。第二轮也是爱丽丝的,她选择w[1] = 0。鲍勃第三回合,他选择了w[2] = 0。在最后一圈,爱丽丝选择w[3] = 1。结果字词,0001在中找到G,因此爱丽丝赢得了比赛。 现在,如果鲍勃选择了w[2] = 1,爱丽丝本可以w[3] = 0在最后一轮选择,但仍然获胜。这意味着无论Bob如何玩,Alice都能赢得比赛。在这种情况下,爱丽丝有一个制胜法宝。可以将这种策略可视化为标记的二叉树,该树在与Bob的转弯相对应的级别上分支,并且其每个分支都包含来自的单词G: A A B A -0-0-0-1 \ 1-0 爱丽丝在转弯时只跟随树枝而玩;无论鲍勃选择哪个分支,爱丽丝最终都会获胜。 输入值 输入为length n,集合G为length的字符串列表(可能为空)n。 输出量 您的输出是Alice拥有获胜策略的周转单列表,这等效于如上所述的二叉树的存在。周转单的顺序无关紧要,但禁止重复。 详细规则 您可以编写完整的程序或函数。对于程序,您可以为输入和输出选择定界符,但两者必须相同。最短的字节数获胜,并且不允许出现标准漏洞。 测试用例 3 [] -> [] 3 [000,001,010,011,100,101,110,111] -> [AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB] 4 [0001,1011,0010] …