#USACO1434. 字母游戏
字母游戏
字母游戏在家用电视机上广泛流行。
在该游戏的其中一个版本中,每个字母都有一个分值,如下图所示:
你需要收集一些字母,并用这些字母拼成一个或多个单词。
拼单词时,一个字母收集了多少个,那么拼的时候就能用多少个,不能多用。
如果只拼出一个单词,那么这个单词的所有字母对应分值相加,就是你的得分。
如果拼出多个单词,那么这些单词的分值相加就是你的得分。
你需要尽可能的使自己的得分达到最高。
我们将提供一个单词列表,只有在列表中出现过的单词才是有效单词。
输入格式
第一行,包含一个小写字母构成的字符串(长度 3∼7),表示你收集到的字母。
接下来若干行,用来描述单词列表,每行包含一个单词,最后一行为一个 “.” 表示输入结束。
单词由小写字母构成,长度 3∼7。
单词列表中的单词,保证没有重复,并且按照字典序排列。
输出格式
第一行输出一个整数,表示最高得分。
接下来若干行,输出所有可以获得最高得分的单词拼法,每行一个。
由给定字母的个数,以及所有列表中单词的长度范围,可以很容易看出,给定字母只能拼出 1∼2 个列表中的单词。
所以,在输出时,应按照字典序排序,先按第一个单词排序,第一个单词相同时,按第二个单词排序。
当能够拼成两个单词时,这两个单词应按照字典序排序,组成单词对。
单词对中的两个单词可以相同。
prmgroa
profile
program
prom
rag
ram
rom
.
24
program
prom rag
提示
单词列表中单词的数量不超过 40000 个。