字符串分解
时间限制:0.5秒 内存限制:256M
【题目描述】
给定一个含若干个单词的字典,如果字典中的一些单词通过串联组成了一个字符串 \(S\)(单词可以重复使用),那么认为字符串 \(S\) 可以分解为字典中的单词。例如:对于字典 { D, DR, RD, ED, RRE },则字符串 DRDRDEDRDDR 可以分解为字典中的单词,其中一种分解方法为:D_RD_RD_ED_RD_DR。
现在请你编一个程序,输入字典中的单词和一个可以被字典分解的字符串 \(S\) ,请你求 \(S\) 有多少种分解方法?
【输入格式】
第一行一个整数 \(N\),表示字典中包含的单词数目。
第二行为 \(N\) 个单词,为字典中的单词,每个单词只包含大写字母,且长度不超过10,单词之间用空格分开。集合中的元素没有重复。
第三行是大写字母组成的字符串 \(S\) ,长度为 1..200,000 之间。
【输出格式】
输出一个整数,表示分解方案数模 \(10^9+7\) 的结果。
【输入输出样例】
Input
5
D DR RD ED RRE
DRDRDEDRDDR
Output
3
【样例说明】
有下列三种分解方案:
D_RD_RD_ED_RD_DR
DR DR D ED RD DR
DR D RD ED RD DR
【数据限制】
对于 \(100\%\) 的数据满足:字典中的单词个数不超过200,字符串S的长度不超过200,000。。
【来源】
Mr.he