目标是编写一个程序,根据用户的偏好,在(悉尼的一部分)铁路网络上生成最佳行程。
您的程序的第一个输入是一个大于0的整数n,表示网络上的火车站数量,接下来是n*2行的形式: 第一行是一个车站的名称,第二行表示在该车站换乘到另一列火车所需的时间(以分钟为单位)
火车站名称的最大长度为16个字符,不包括空格。 转移时间将是一个正整数。 每个名字只能输入一次。 您的程序的下一个输入是一个大于0的整数m,表示每天的火车数量,接下来是m个时间表。
每个时间表以大于1的停站数s开头,后跟s*2行的形式: 意思是你可以在给定的时间( hh - 小时, mm - 分钟)在那个车站上下车。 输入语法正确。 所有时间都以4位数字表示,有效范围从0000到2359。
只有之前作为网络的一部分输入的火车站将被使用。 站点按照正确的时间顺序输入。 所有火车在午夜之前都会到达最终站。 和以前一样,您可以假设输入是正确的:两个不同的有效火车站,后跟 4 位数形式的有效时间。
当用户在出现From提示时输入“ done ” 时,您的程序应该终止: 第 1 阶段要求您从输入生成合适的数据结构。 此阶段的测试用例将仅使用查询 FromStation、ToStation、ArrivalTime ,
以便: ·存在且仅有一列从 FromStation 开往 ToStation 的火车 ; ·这列火车在给定的ArrivalTime或之前到达 和该列车是查询所需的输出。
因此,这个阶段你需要做的就是找到并输出两个火车站之间的连接,包括沿途所有站点以及到达/出发时间。 对于下一阶段,您的程序应该找到并输出从FromStation 到 ToStation的连接·可能涉及一趟或多趟列车换乘 不晚于 ArrivalTime到达 ToStation ;和 ·尽可能晚离开。 请注意,您可以在任何车站换乘不同的火车,但需要考虑在该车站换乘火车所需的时间。 在这一阶段的所有测试场景中,最多有一个连接可以满足所有要求。 对于最后阶段,如果有多个可能的转机具有相同的最迟出发时间,您的程序应考虑以下额外的用户偏好: ·在所有出发时间最晚的中转中,选择总行程时间最短的中转。 您可能会认为,最晚出发时间和最短总体旅行时间的转机绝不会超过一次。另请注意,旅行时间包括换乘火车所需的时间和等待时间(如果适用)。
的要求是编写一个程序,根据用户的偏好,在悉尼的一部分铁路网络上生成最佳行程。根据输入的火车站信息和时间表,程序需要找到从起始站到目的站的最佳连接,并考虑最晚出发时间和最短总体旅行时间的偏好。
以下是一个示例的算法流程,可帮助您实现这个程序:
读取输入数据:
读取火车站数量n,并创建一个空的火车站列表。
循环读取n*2行数据,将每个车站名称和换乘时间添加到火车站列表中。
读取火车数量m,并创建一个空的时间表列表。
循环读取m个时间表,每个时间表包括停站数和对应的停站时间。
构建数据结构:
创建一个字典或类来表示火车站,每个火车站包括名称、换乘时间和相邻火车站的连接信息。
使用火车站列表中的数据构建火车站对象,并建立火车站之间的连接关系。
查询连接:
当用户输入"done"时,终止程序。
否则,解析用户输入的起始站、目的站和到达时间。
查找最佳连接:
从起始站开始,进行深度优先搜索或迪杰斯特拉算法,找到从起始站到目的站的所有连接。
对于每个连接,计算总行程时间,并记录最晚出发时间和最短总体旅行时间的连接。
输出最佳连接:
根据用户偏好,选择最晚出发时间和最短总体旅行时间的连接。
输出起始站、沿途所有站点和到达/出发时间。
这只是一个大致的算法流程,您可以根据具体情况进行调整和优化。同时,您可能需要考虑异常处理、数据验证和其他边界条件等方面的处理。
希望以上信息对您编写程序有所帮助!如果您有任何进一步的问题,请随时提问。
鄂ICP备2023011697号-1 | Powered By 91代做