#616. 字母游戏 Letter Game

字母游戏 Letter Game

题目描述

img

在家里用电视机做字母游戏是很流行的,其中一种玩法是:每一个字母有一个数值与之对应.你收集字母组成一个或多个词以得到尽可能高的得分.除非你已有了 “找词的方法”(awaywithwords)\red{(“a way with words”)},你会把你知道的字都试一遍.有时你也许会查阅其拼写,然后计算得分。

显然可以用计算机更为准确地完成此任务。上图示出了英文字母及其所对应的值,当给出英文单词(word)\red{(word)} 的表列及收集的字母时,请找出所能形成的得分最高的词或词对(pairsofwords)\red{(pairs of words)}

输入格式

输入文件lgame.in\red{lgame.in}中有一行由小写字母(a\red{'a'}z\red{'z'})组成的字符串, 这就是收集到字母(就是可以使用的字母),字符串由至少3\red 3个字母至多7\red 7个字母(以任意顺序) 组成。

(filelgame.dict)\red{(file lgame.dict)}

词典文件lgame.dict\red{lgame.dict}由至多40000\red{40,000}行组成,文件的最后一行有.\red{'.'} 表示文件的结束。其它各行每一行都是由至少3\red 3个小写字母,至多7\red 7 个小写字母组成的字符串。文件中的词已按字典顺序排序。

(管理员注:读入不用开文件,先读.in\red{.in},再读.dict\red{.dict}

输出格式

第一行,你的程序应写上最高得分(子任务A).使用上面图形中给出的字母-值对应表。

随后的每一行是由文件lgame.dict\red{lgame.dict}中查到的具有这个得分的所有的词和或词对(wordpairs)\red{(word pairs)}(子任务B\red B)。要利用图中给定的字母的值。

当两个词能够形成 一个组合(具有给定的字母)时,这两个词应该打印到同一行,两个词中间用一个空格隔开。不许重复表示词对,例如ragprom\red{'rag prom'}promrag\red{'prom rag'}是同样的词对,只输出字典顺序较小的那个。

输出要按照字典顺序排序,如果两个词对第一个单词的顺序相同,则按照第二个单词。一个词对中的两个单词可以相同。

样例

输入样例

SAMPLE INPUT(file lgame.in)

prmgroa
[编辑] SAMPLE INPUT(file lgame.dict)

profile
program
prom
rag
ram
rom
.

输出样例

24
program
prom rag