【发布时间】:2020-03-19 01:51:06
【问题描述】:
我已经尝试解决这个问题大约 2 小时。我没有能力解决。有谁知道如何解决它?我尝试使用Python v. 3+
任何帮助将不胜感激:
给定一个二维字母数组,找出可以通过在字母表中相邻字母之间移动来创建的最长路径 - 例如,如果你在 D 上,你可能会移动到 E 或 C。你可以向上、向下、向左或向右移动一行或一列,但不能沿对角线或超过一个空格。您可以从任何方格开始,并且您只能使用给定的行/列对一次。
返回代表最长路径的行/列对的有序列表。如果两条路径之间存在平局,则返回以最低行索引开始的路径,如果这也是平局,则使用具有最低行和列索引的路径。 (如果仍然平局,返回任一路径都是可以的。)
示例输入
A B H F
C C D G
A B D F
示例输出
ABCBA
说明 该数组将始终包含至少一个值。 A 和 Z 不被视为“相邻”字母。 所有行将包含相同数量的字母。
【问题讨论】:
-
请发表你最好的攻击。这是一个简单的图遍历——一旦你将它识别为一个图。你被困在哪里了?
-
不是简单的图遍历;这是一个 NP-hard 问题。某种图遍历算法可以找到两个节点之间的最大距离,但这与寻找最长路径的问题不同。
标签: algorithm dynamic-programming graph-algorithm depth-first-search breadth-first-search