2017-05-14 97 views
1

我有一点点问题,这个问题的算法。飞旅客航空公司

问题陈述:

飞翔的旅行者航空公司(FTAir)想要一个程序来处理客户请求从一些起点城市飞往某个目的地城市。对于每位客户,请说明是否存在从出发城市到目的地城市的FTAir航班序列并产生行程 - 航班序列。输入:三个输入文本文件,指定所有航班信息如下: •FTAir服务的城市名称(至少15个城市)。 •双城市名称;每一对代表FTAir航班之一的出发地和目的地。 •一对城市名称;每对表示从某个出发城市飞往某个目的地的请求(至少5个请求具有不同的场景)。每个请求都考虑单向飞行。

规则:

寻找从起点城市到目的地城市的路径,如果关于其参观cities.Do不能访问一个城市比once.If有多个路径的更多订单exists.Maintain信息,你可以将它们全部列出并找到最不访问的城市。 (可选的)。此外,通过堆栈(使用链表)和递归方法!

我的做法是:

首先,我们需要一个数据结构来包含所有输入的文本文件。比方说,我们有一个数组中的城市名称,二维数组中的城市对(起源 - >目的地),以及二维数组中的重建。

对于要退出的请求矩阵中的路径,它必须由我们的FTAir服务,所以对于每个请求我们需要搜索城市数组中的起点和目的地,如果两者匹配,那么只有我们继续到我们的下一步。

找到匹配后,我们必须将请求原点映射到航班起点,即我们必须检查是否有任何要求的起点航班,如果不是,则再次没有可能的旅行请求路径。

但是,如果有匹配,我们把这个原点放在一个堆栈上,并检查它的目的地,并将它与请求的目的地进行比较,如果这是一个匹配我们有一个直接的航班,如果没有把它进入堆栈并在飞行的二维数组中寻找目的地作为原点。继续执行程序,直到比赛结束。但是如果我们两次访问一个城市呢?请检查您输入到堆栈中的数据,如果发现重复数据,请中止!

我不能将我的想法转换成代码,任何人都可以帮助我吗?

+0

我们不能在这里使用图形数据结构,使用图形和应用DFS,我们可以很容易地找到是否存在从原点到目的地的路径,并且DFS使用递归,让我知道我们是否可以使用图形 – zenwraight

+0

是的,我们可以使用任何实现递归或堆栈的方法(使用链表)! –

回答

0

所以我们通过一个例子来看看这个问题。

我们的城市下面的列表,其中航空公司去

1. Cambridge (A) 
2. Harvard (B) 
3. Hampshire (C) 
4. Toronto (D) 
5. Montreal (E) 
6. Quebec (F) 

现在我们城市的一个映射对之间的飞行去从。

1. (A,B) 
2. (C,D) 
3. (D,E) 
4. (B,C) 

所以,现在如果得出这样的一纸我们用5个城市的地图看起来像这样

A -> B -> C -> D -> E 

所以,现在如果你问我,如果我想从A到C的旅行,有没有路径对此,你可以简单地启动一个DFS(A),如果你达到C,那么答案是肯定的。

想,我问的是有从A到F的路线,然后将DFS(A)会给我假,我的答案是否定的。

我们检查您是否已经访问过一个城市或没有,只是保持gloval数组访问[]和你一起DFS方法去,继续为参观标志着城市。

希望这将清除您的一些疑问。在下面的评论部分询问更多问题。