由列表中的单词做的单词链

时间:2013-11-01 20:17:27

标签: algorithm


     我陷入了一个编程问题。我需要帮助! 问题如下。给定一个单词列表,如果可以创建如下的单词链,我必须返回true。  

cat tab bat等,即一个单词的结束字母必须是链中另一个的开头。
我该如何实现呢?我只能想到蛮力解决方案,我会生成列表的所有排列,然后检查它是否符合条件。 感谢。

1 个答案:

答案 0 :(得分:4)

考虑一个有向图,每个字母都有一个顶点,每个字都有一个边。

所以单词“cat”对应于从顶点“c”到顶点“t”的有向边。

在此图表中,您试图查看是否存在Eulerian path

检查Eulerian路径可以按照Wiki页面上的说明完成:

  

有向图有一条欧拉路径,当且仅当最多只有一条   顶点有(out-degree) - (in-degree)= 1,最多有一个顶点   (in-degree) - (out-degree)= 1,每隔一个顶点具有相等的in-degree   和out-degree,以及所有非零度的顶点都属于   基础无向图的单个连通分量。

实施例

enter image description here

在这张照片中,我们可以通过旅行“c” - >“t” - >“b” - >“t”来旅行所有边缘。

这是一条欧拉路径(沿着所有边缘行进),对应于单词cat,tab,bat。