#P1795. DNA Laboratory
DNA Laboratory
题目描述
背景
最近,邪恶的弗兰肯斯坦博士开始建立自己的DNA实验室,但他对最新的技术还不够了解。他想要提取自己的DNA,进行一些增强并克隆自己。他已经知道如何从一些血细胞中提取DNA,但不幸的是,读取DNA序列意味着需要将DNA分解成许多短片段并先分析这些片段。弗兰肯斯坦还没有完全理解如何将这些片段重新组合以恢复原始序列。
他解决这个问题的务实方法是潜入大学并绑架一些看起来聪明的学生。不出所料,你就是其中之一,所以你最好尽快想出一个解决方案。
问题
给定一个由字母A(腺嘌呤)、C(胞嘧啶)、G(鸟嘌呤)和T(胸腺嘧啶)组成的字符串列表,你的任务是找到一个最短的字符串(通常不在列表中),该字符串包含所有给定的字符串作为子串。
如果有多个长度相同的最短字符串,则找出字母序(字典序)最小的那个。
输入
第一行包含场景的数量。
对于每个场景,第一行包含字符串的数量,其中。然后是这些字符串,每行一个,长度在到之间,且仅由字母"A"、"C"、"G"和"T"组成。
输出
每个场景的输出以一行"Scenario #i:"开始,其中是场景的编号,从1开始。然后输出一行包含上述最短(且字典序最小)的字符串。每个场景的输出以空行结束。
示例输入
1
2
TGCACA
CAT
示例输出
Scenario #1:
TGCACAT
来源
TUD Programming Contest 2004, Darmstadt, Germany