zoj 1387 译题+题解

来源:互联网 发布:大数据研究中心 编辑:程序博客网 时间:2024/05/16 19:54

Decoding Morse Sequences
在数字时代以前,无线电通讯最常用的二进制码是摩斯码。在摩斯码中,符号被译成一串短或长的脉冲(有.或-组成)。题目表中的表给出的就是大写字母对应的脉冲。
我们注意到在缺乏停顿的情况下,一种摩斯密码可能有多种解释。例如, -.-..-- 可以翻译成CAT或NXT。一个摩斯密码操作员将联系上下文信息(如一本字典)来决定密码的意思。即使有字典,也可能存在多种解法。
任务:
写一个程序能通过每一个数据。对于每个数据:读入一个摩斯密码和一列单词。计算不同的翻译方法数目。写出结果。
输入:第一行包括一个整数d表示数据的个数。(1 <= d <= 20)接下来是数据,每组数据第一行包括一个摩斯密码,最多有10 000个"."和"-"组成,不含空格。第二行包括一个整数n,( 1 <= n <= 10 000)表示单词个数。接下来n行,每行一个单词。每个单词至多包括20个大写字母。没有重复出现的字母。
输出:每个数据对应一行,每行包括一个整数代表不同的翻译数目。对于每个数据,这个整数一定最大为2 * 10^9。
Sample Input
1
.---.--.-.-.-.---...-.---.
6
AT
TACK
TICK
ATTACK
DAWN
DUSK

Sample Output
2

 

题解:首先感谢CH同学,在他的指导下我完成了这题。

颇经典的DP,就是读入的时候麻烦了点。

DP方程:

 

附上程序,欢迎鄙视:

原创粉丝点击