字符串处理-给定n个字符串,将它们连接起来,求生成的最长字符串,该怎么解决

字符串处理-给定n个字符串,将它们连接起来,求生成的最长字符串
约束:
给定n个字符串,将它们连接起来,连接方式如下:
1. 每个字符串最多只能用一次;
2. 前一个字符串的结尾字符与后一个字符串的前字符相同;

任务:
1. 以C#或其他编程语言实现求生成的最长字符串的算法;
2. 分析算法的时间复杂度;
3. 将本问题转化为图论中的问题,并给出算法;
4. 自行假定一种运行时环境,估算前面给出的算法可以求解的问题规模。


------解决方案--------------------
求:经过图中每条边最多一次的最大路程

应改为:

求:经过图中每条边最多一次的路程最大的漫游路径


思路:
1、考察每个节点的出边和入边数目;考察能使得整幅图出边与入边“平衡”的最佳取舍方案(计算出不同出边/入边集合情况下,每个点所允许的最大出边/入边数目,以及由此得到的最大路程);

2、考察每个节点作为整个路程起始点和结束点时对路程计算的影响(起始点可以从它那里多一条出边;结束点可以多一条入边。这两个可以是一个点,计算方法见1);选出最优始、末点;

3、输出答案吧
------解决方案--------------------
做一副图,以26个字母为顶点.字符串为边,从首字母到尾字母的一条边.边的权值为字符串长度.
然后这个问题就转化为欧拉回路问题了(每条边最多经过一次的路径).只是这道题目边带了权值
------解决方案--------------------
我想把一个串看成是图中的一个点,如果前一个字符串的结尾字符与后一个字符串的前字符相同,则在图中把它们连接起来,这样,这些串可以构成一个有向图,只要在图中求出最长的路径就可以了(并要求不是回路),如 (asdfb)与(bas)可以看成两个点由点asdfb连接点bas.