#P583. 【HAOI2005】寻找编码串

【HAOI2005】寻找编码串

【问题描述】

给定N个由0和1组成的编码S1,S2,…,Sn,寻找一个长度最短的编码串T,使得T至少可以分解出两种不同的Si的排列,在排列中有的编码可以不出现。

例如:S1=0110,S2=00,S3=111,S4=001100,S5=110,编码串T=001100110

T有两种不同的分解T=S2+S5+S1,T=S4+S5

【输入文件】codestring.in

第1行:N(编码的个数N<=20)

第2--N+1行:Si(第i个编码,Si的长度<=50)

注意,该例子只是对库函数的使用说明,并没有算法上的意义。

【输出文件】codestring.out

第1行:M(编码串的长度)

第2行:T(长度最短的编码串)

【约束条件】

若有多个长度相同且最短的编码串。则输出字典序最小的编码串。例如:若有两种最短的编码串:10110010100利10001110010,则输出10001110010。

【输入输出样例】

codestring.in

5
0110
00
111
001100
1100

codestring.out

6
001100