【发布时间】:2014-09-28 20:43:17
【问题描述】:
我正在尝试解决 CodeEval 中的this 问题。
在这个挑战中,我们建议您玩已知的游戏“Word 链”,其中玩家想出以字母开头的单词 上一个词以结尾。挑战在于确定 可以从单词列表中创建的链的最大长度。
例子:
Input:
soup,sugar,peas,rice
Ouput:
4
解释:我们可以形成这样的4个单词链:“soup->peas->sugar->rice”。
约束:
- 单词列表的长度在 [4, 35] 范围内。
- 单词列表中的单词由长度为 [3, 7] 个字母的随机小写 ascii 字符串表示。
- 单词列表中没有重复的单词。
我的尝试:我的方法是将单词建模为图形,这样输入中的每个单词都代表一个节点,如果最后一个字符,则从 wordi 到 wordj 之间存在(有向)边wordi 的第一个字符等于 wordj 的第一个字符。
之后,我从每个节点运行 bfs 并计算距此节点最远的节点的长度。最终结果是所有节点可能的最大值。
但是这种方法并没有给我满分。因此,我的问题是如何正确有效地解决这个问题?
【问题讨论】:
-
我他建了一棵树,不应该有一个循环。对于每个节点,您都知道子节点的剩余候选者列表。
-
@SteveK 嗯,
sos单独是一个循环,所以长度可以是无限的 -
@Pham - 如果您以
sos开始树,则剩余候选人列表将为{}。很难从一个空列表中产生一个循环。 -
@Pham 我同意(错过)解释的空间很小。但如果你是对的,那么约束对算法本身的影响几乎为零。所以我会说你错了,因为我认为约束是有原因的。无论如何,这有点毫无意义,特别是因为我们失去了 OP... :)
-
@jangroth 哈哈,完全同意:)