#P1795. DNA Laboratory

    ID: 796 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>搜索DFS动态规划状压DPTUD Programming Contest 2004DarmstadtGermany

DNA Laboratory

题目描述

背景
最近,邪恶的弗兰肯斯坦博士开始建立自己的DNA实验室,但他对最新的技术还不够了解。他想要提取自己的DNA,进行一些增强并克隆自己。他已经知道如何从一些血细胞中提取DNA,但不幸的是,读取DNA序列意味着需要将DNA分解成许多短片段并先分析这些片段。弗兰肯斯坦还没有完全理解如何将这些片段重新组合以恢复原始序列。

他解决这个问题的务实方法是潜入大学并绑架一些看起来聪明的学生。不出所料,你就是其中之一,所以你最好尽快想出一个解决方案。

问题
给定一个由字母A(腺嘌呤)、C(胞嘧啶)、G(鸟嘌呤)和T(胸腺嘧啶)组成的字符串列表,你的任务是找到一个最短的字符串(通常不在列表中),该字符串包含所有给定的字符串作为子串。

如果有多个长度相同的最短字符串,则找出字母序(字典序)最小的那个。

输入
第一行包含场景的数量。

对于每个场景,第一行包含字符串的数量nn,其中1n151 \leq n \leq 15。然后是这些字符串,每行一个,长度在11100100之间,且仅由字母"A"、"C"、"G"和"T"组成。

输出
每个场景的输出以一行"Scenario #i:"开始,其中ii是场景的编号,从1开始。然后输出一行包含上述最短(且字典序最小)的字符串。每个场景的输出以空行结束。

示例输入

1
2
TGCACA
CAT

示例输出

Scenario #1:
TGCACAT

来源
TUD Programming Contest 2004, Darmstadt, Germany