#USACO1231. 最长前缀
最长前缀
题目描述
在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。
如果一个集合 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 ,那么我们认为序列 可以分解为 中的元素。
元素不一定要全部出现(如下例中BBC就没有出现)。
举个例子,
序列 ABABACABAAB 可以分解为下面集合中的元素:{A, AB, BA, CA, BBC}
序列 的前面 个字符称作 中长度为 的前缀。
设计一个程序,输入一个元素集合以及一个大写字母序列 ,设是序列的最长前缀,使其可以分解为给出的集合中的元素,求的长度。
输入格式:
首先,将输入短序列集合 ,集合中的元素将在一行或多行中给出,每个短序列之间用空格隔开。
集合的所有元素都输入完毕后,会在独立的一行输入一个 .
表明集合已经输入完毕。
保证集合中的元素互不相同。
然后输入大写字母序列 ,序列可能占一行或多行,每行最多包含 76 个字母,换行符不是序列的一部分。
输出格式:
只有一行,输出一个整数,表示 符合条件的前缀的最大长度。
A AB BA CA BBC
.
ABABACABAABC
11
提示
中的元素数量不会超过 200,每个元素的长度不会超过 10。
的长度不会超过 。