#P1318. Word Amalgamation

Word Amalgamation

题目描述

在美国数以百万计的报纸上,有一种名为“混乱填词(Jumble)”的文字游戏。这个游戏的目标是解开一个谜题,但为了找到答案中出现的字母,有必要对四个单词进行重新排列组合(将打乱的字母还原成正确的单词)。你的任务是编写一个程序,能够对单词进行这种还原操作。

输入

输入包含四个部分:

  1. 一个字典,由至少一个且最多100100个单词组成,每个单词占一行;
  2. 包含“XXXXXX”的一行,这表示字典部分的结束;
  3. 一个或多个需要还原的打乱的“单词”,每个单词独占一行;
  4. 另一行包含“XXXXXX”,这表示文件的结束。

所有单词,包括字典中的单词和打乱的单词,都只由小写英文字母组成,且长度至少为11个字符,最多为66个字符。(请注意,作为标记的“XXXXXX”包含的是大写的“X”。)字典中的单词不一定是按顺序排列的,但字典中的每个单词都是唯一的。

输出

对于输入中每个打乱的单词,按字母顺序输出所有可以通过重新排列该打乱单词中的字母而形成的字典中的单词。这个列表中的每个单词都必须独占一行。如果列表为空(因为无法通过重新排列形成字典中的任何单词),则输出“NOT A VALID WORD”这一行。在任何一种情况下,都输出一行包含六个星号“******”的内容,以表示列表的结束。

输入示例

tarp
given
score
refund
only
trap
work
earn
course
pepper
part
XXXXXX
resco
nfudre
aptr
sett
oresuc
XXXXXX

输出示例

score
******
refund
******
part
tarp
trap
******
NOT A VALID WORD
******
course
******

来源

1998年美国中北部地区竞赛