【发布时间】:2017-10-13 12:16:25
【问题描述】:
我对这个问题的算法有点问题。
问题陈述:
The Flying Traveler Airline Company (FTAir) 需要一个程序来处理客户从某个出发城市飞往某个目的地城市的请求。对于每个客户,说明是否存在从始发城市到目的地城市的 FTAir 航班序列,并生成行程 - 航班序列。输入:三个输入文本文件,指定所有航班信息,如下所示: • FTAir 服务的城市名称(至少 15 个城市)。 • 成对的城市名称;每对代表 FTAir 一个航班的出发地和目的地。 • 一对城市名称;每对代表一个从某个出发城市飞往某个目的地的请求(至少 5 个不同场景的请求)。每个请求都被视为单程航班。
规则:
找到从起点城市到目的地城市的路径(如果存在)。维护有关它访问城市的顺序的信息。不要多次访问一个城市。如果有多个路径,您可以将它们全部列出并找到访问量最少的城市。 (可选的)。此外,通过堆栈(使用链表)和递归方法!
我的做法是:
首先,我们需要一个数据结构来包含所有输入文本文件。假设我们有一个数组中的城市名称,二维数组中的一对城市(起点 --> 目的地),以及二维数组中的请求。
对于请求矩阵中的出口路径,它必须由我们的 FTAir 提供服务,因此对于每个请求,我们需要在城市数组中搜索起点和终点,如果两者都匹配,那么只有我们继续我们的下一步。
找到匹配项后,我们必须将请求来源映射到航班来源,即我们必须检查是否有任何来自所需来源的航班,如果没有,则再次没有可能的旅行请求路径。
但是,如果匹配,我们将该起点放入堆栈并检查其目的地并将其与请求的目的地进行比较,如果匹配,我们就有直飞航班,如果没有放入到堆栈并在航班的二维数组中查找作为起点的目的地。继续执行该过程,直到匹配。但是如果我们两次访问一个城市呢?检查你在堆栈中输入的数据,如果发现重复数据,则中止!
我无法将我的想法转换为代码,有人可以在这里帮助我吗?
【问题讨论】:
-
我们不能在这里使用图形数据结构吗,如果有从起点到终点的路径,我们可以很容易地找到图形和应用 DFS,并且 DFS 使用递归,让我知道我们是否可以使用图表
-
是的,我们可以使用任何实现递归或堆栈的方法(使用链表)!
标签: algorithm recursion linked-list stack