#P2072. GHOST
GHOST
描述
GHOST是一款拼写游戏,无聊的孩子们在长途汽车/巴士旅行中玩。游戏的目的是积累字母拼出某个单词,但永远不要真正完成一个单词。游戏开始前,玩家们商定游戏顺序。游戏从一个玩家转到下一个玩家,然后回到第一个玩家,直到游戏结束。每个玩家在自己的回合必须选择:) 扩展当前的"单词",) 虚张声势(),或 ) 挑战()。
最常见的玩法是通过添加一个字母来扩展当前的字母序列,使得结果序列是某个单词的开头。例如,第一个玩家可能会说"",心里想着单词""。第二个玩家可能会说"",想着单词""。第三个玩家可能会说"",想着单词""。
如果一个玩家实际上完成了一个有效的个或更多字母的英文单词,则该玩家输。例如,如果只有三个玩家,在""之后,第一个玩家可能会尝试通过说""来扩展单词,想着单词""。然而,这将是一个失败的玩法,因为""是一个有效的单词。
如果一个玩家想不出有效的字母来扩展当前序列,可以选择"虚张声势"(),喊出一个任意字母,希望下一个玩家不会注意到。
最后,如果一个玩家在他的回合中认为前一个玩家在虚张声势或前一个玩家完成了一个单词,他可以挑战前一个玩家。如果所有玩家都同意当前序列完成了一个单词(至少个字母),则前一个玩家输。如果前一个玩家不能说出一个可以由当前序列形成的单词,则前一个玩家输。如果当前序列不是一个有效单词且前一个玩家能够说出一个以该序列开头的可能单词,则挑战者输。
编写一个程序作为游戏中的一个玩家。注意,一个熟练的玩家在她的回合中不仅会考虑为当前字母序列提供一个合法的扩展,还会考虑所有可以从扩展中形成的单词,并比较这些单词的字母数与玩家数量,考虑可能的扩展是否会导致她在未来的回合中被困在没有合法扩展的情况下,从而输掉游戏。
输入
输入由一个或多个场景组成。每个场景包含以下内容:
第一行是一个整数,表示游戏中的玩家数量。这个值至少为。输入文件结束由小于的数字表示。
接下来是作为程序字典/词汇表的单词列表。每个单词单独一行,没有前导、尾随或内部空格。每个单词只包含{-}的字符。这个单词列表的结束由一个空行表示。
空行之后,场景的最后一行输入包含当前的字母序列,同样没有前导或尾随空格。这个序列可能为空(如果计算机玩家是第一个玩家)。序列也可能包含比玩家数量更多的字母,表示所有玩家(包括计算机玩家)已经进行了一轮或多轮。
输出
对于每个场景,程序将产生一行输出。该行输出将由输入中的当前字母序列组成,后跟一个空格,然后是:
单词"" - 如果当前序列是词汇表中的完整单词,或者不是词汇表中任何单词的前缀。
一个表示有效扩展的单个字符 - 如果可以找到某个使用该扩展形成的单词,使得该扩展不会完成一个单词,并且如果所有其他玩家继续拼出同一个单词,该单词或任何更短的单词都不会在计算机玩家的回合完成。
如果有多个这样的扩展,并且如果有任何扩展保证其他玩家会输,程序应选择其中最小的一个( < < ... < )。
单词"" - 如果唯一可能的扩展会导致计算机玩家输。
提示
如果有必胜的选择(即选择某个扩展后,任何以这个扩展构成的单词都会导致另一个玩家输),优先选择这种扩展。如果有多个,选择最小的那个。
如果没有必胜的选择,就选择可能胜的扩展(即有些以这个扩展构成的单词会导致另一个玩家输,有些会导致自己输)。如果有多个,选择最小的那个。
最后如果没有上述两种,就只好。 输入数据 1
3
area
arched
apple
apply
applied
ar
2
area
arch
apple
apply
applied
applying
a
2
area
ax
0
输出数据 1
ar e
a p
ax Challenge
来源
Mid-Atlantic 2004