计算可能的最长连续遍历

如何解决计算可能的最长连续遍历

背景

卡车车队调度员正试图确定在大雨淹没某些高速公路后哪些路线仍可通行。在行驶过程中,卡车必须在 26标记AZ 的航路点之间遵循线性、有序的路径;换句话说,它们必须以标准或反向字母顺序遍历航路点。

调度员可以使用的唯一数据是行程日志,其中包含最近成功行程的记录。日志以字符串列表表示,其中每个字符串(对应一个条目)有两个字符分别对应于行程起点和目的地航点。

如果日志包含两点之间成功旅行的记录,则可以假设这些点之间的完整路径是可访问的。请注意,日志条目意味着遍历的两个方向都是有效的。例如,输入 RP 意味着卡车可以沿 R --> Q --> PP --> Q --> R 移动。请注意,行程 A --> BC -> D 一起并不意味着 B -> C 可用。条目可以有两次相同的字符,例如 C -> C,但这表示没有路径。

给定一个日志条目数组,任务是编写一个函数来返回可能的最长连续遍历的长度;换句话说,计算已知安全的最大连续边数。 (用更正式的术语来说,计算这个图上最大树的直径。)


我试图返回可能的最长连续遍历的长度;换句话说,计算已知安全的最大连续边数。

def maximumTraversal(log):
    length = []
    for i in log:
        length.append(abs(ord(i[0]) - ord(i[1])))
    return max(length)

日志条目暗示遍历的两个方向都是有效的。例如,条目 RP 表示卡车可以沿 R --> Q --> PP --> Q --> R 行驶。

我能够找到两个方向的遍历/长度。

log = ["BG","CA","FI","OK"]
maximumTraversal(log)

返回

5

logbook = ["BG","OK"] 的预期输出应该是 8

因为我们可以从 AC 和从 BG,所以我们可以从 AG .因为我们可以从 F 到达 I 并从 I 访问 G,因此我们可以遍历 A --> I。这对应于 8 的遍历长度,因为 8 边连接这些 9 航路点。 OK 是长度 4 遍历。这两条路径是不相交的,因此不再能找到连续的路径,答案是8

我无法找到上述条件的可能连续遍历?我该怎么做?

解决方法

您可以25 位存储您需要的信息,每条边一个。第一位代表AB,第二位代表BC,第三位代表CD,依此类推

A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

迭代每个日志条目并将相应的位设置为 1。这将自然地处理重叠的日志条目而不会出现问题。

以下是日志 ["BG","CA","FI","OK"] 的每个步骤的样子:

[]
A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

["BG"]
A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z
 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

["BG","CA"]
A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z
 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

["BG","FI"]
A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z
 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

["BG","OK"]
A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z
 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

尘埃落定后,您可以通过查找相邻1s的最长运行来找到最长的连续遍历。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?