问题描述
现有一些由英文字符组成的大小写敏感的字符串。编写一个程序,找到一个最长的字符串x,使得:对于已经给出的字符串中的任意一个y, x或者是y的子串、或者x中的字符反序之后得到的新字符串是y的子串。
形式化定义:给定 S={s1,…,sn}, 寻找一个x, S.T.
?y (y ?S ? (x?y ? x’?y)) ? ? z (?y (y ?S ? (z?y ? z’?y)) ? (x?z)) ? strlen(x)?strlen(z)
其中, s1,…,sn, x, z表示字符串;
x’和z’分别表示x和z中的字符反序之后得到的新字符串;
strlen(x) 和strlen(z)分别表示x和z的长度。
输入要求
输入的第一行是一个整数t (1? t ?5), t 表示测试数据的组数;
对于每一组测试数据,第一行是一个整数n (1? n ?10), 表示已经给出n个字符串;
接下来n行,每行给出一个长度在1~50之间的字符串
输出要求
对于每一组测试数据输出一行,给出问题描述中要求的字符串x的长度;
如果找不到符合要求的字符串,则输出0。
|