我有一点点问题,这个问题的算法。飞旅客航空公司
问题陈述:
飞翔的旅行者航空公司(FTAir)想要一个程序来处理客户请求从一些起点城市飞往某个目的地城市。对于每位客户,请说明是否存在从出发城市到目的地城市的FTAir航班序列并产生行程 - 航班序列。输入:三个输入文本文件,指定所有航班信息如下: •FTAir服务的城市名称(至少15个城市)。 •双城市名称;每一对代表FTAir航班之一的出发地和目的地。 •一对城市名称;每对表示从某个出发城市飞往某个目的地的请求(至少5个请求具有不同的场景)。每个请求都考虑单向飞行。
规则:
寻找从起点城市到目的地城市的路径,如果关于其参观cities.Do不能访问一个城市比once.If有多个路径的更多订单exists.Maintain信息,你可以将它们全部列出并找到最不访问的城市。 (可选的)。此外,通过堆栈(使用链表)和递归方法!
我的做法是:
首先,我们需要一个数据结构来包含所有输入的文本文件。比方说,我们有一个数组中的城市名称,二维数组中的城市对(起源 - >目的地),以及二维数组中的重建。
对于要退出的请求矩阵中的路径,它必须由我们的FTAir服务,所以对于每个请求我们需要搜索城市数组中的起点和目的地,如果两者匹配,那么只有我们继续到我们的下一步。
找到匹配后,我们必须将请求原点映射到航班起点,即我们必须检查是否有任何要求的起点航班,如果不是,则再次没有可能的旅行请求路径。
但是,如果有匹配,我们把这个原点放在一个堆栈上,并检查它的目的地,并将它与请求的目的地进行比较,如果这是一个匹配我们有一个直接的航班,如果没有把它进入堆栈并在飞行的二维数组中寻找目的地作为原点。继续执行程序,直到比赛结束。但是如果我们两次访问一个城市呢?请检查您输入到堆栈中的数据,如果发现重复数据,请中止!
我不能将我的想法转换成代码,任何人都可以帮助我吗?
我们不能在这里使用图形数据结构,使用图形和应用DFS,我们可以很容易地找到是否存在从原点到目的地的路径,并且DFS使用递归,让我知道我们是否可以使用图形 – zenwraight
是的,我们可以使用任何实现递归或堆栈的方法(使用链表)! –