簡體   English   中英

C編程語言,最短路徑

[英]C programming language, shortest path

我正在編寫代碼以查找兩點之間的最短距離。 到目前為止,我的代碼運行良好。 我的意思是它找到了他們應該經過的距離和路徑。 我需要打印此信息,但是我應該執行打印功能。 它的工作方式是這樣的:例如,起始點是4,最終點是13。

我應該提出一種算法來檢查它們的中間點。 假設4和13之間有一點:7

4--7--13現在,我需要檢查它們之間的每個點,例如:

4--6--7--9--13更具體地說,它將檢查4-6和6-7與7-9和9-13之間是否存在點。 因此,在下一個迭代中的下一個可能會形成另一個列表,例如:

4--2--6--7--5--9--17--13現在假設它們之間沒有任何中間值。 這就是我應該打印的內容。 我真的很感謝您的幫助,建議您可以給我

Warshall-Floyd算法(由OP使用)具有一種版本,該版本除了可以確定圖的節點之間的距離之外,還可以確定路徑:

具有路徑重構的Floyd-Warshall算法

但是,必須注意,這不是解決最短路徑問題的最佳算法。

這聽起來像遞歸將是執行此操作的最佳方法。 如果已經可以找到最短路徑,則假定您已編寫了一個函數來查找2點之間的最短路徑。 也許您可以遞歸地分解列表,找到最短路徑,然后將該點附加到列表中。

編輯,對不起,我誤讀了您的問題,您需要找到中點。 將整個點列表傳遞給遞歸函數,然后找到一個中點。 如果存在,請將其添加到列表中。 如果沒有中點,請勿添加任何內容。 繼續調用此函數,直到出現基本情況,在列表中應該為1或2點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM