2017-05-14 98 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方法去,繼續爲參觀標誌着城市。

希望這將清除您的一些疑問。在下面的評論部分詢問更多問題。