[問題] 最佳路徑運算

看板C_and_CPP作者 (Nicle)時間13年前 (2010/09/30 11:07), 編輯推噓1(104)
留言5則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我想設計一個程式, 它會從文字檔中讀取起點,終點和路徑所經過的點和時間, 程式會算出哪條路徑所需時間最短. 文字檔裡有多個起點和多個終點 文字檔內容如下: 檔案一 : input output node a x d b z e c f g h i j k 檔案二 : path time(ms) a - > d 0.3 a - > k 0.5 b - > f 1.0 從檔案一和二來看 a 有兩條路徑 b - > j 4.9 d - > e 5.0 a - > input c - > i 3.0 / \ c - > h 4.0 d k d - > g 3.9 / \ \ g - > x 9.0 g e z - >output time : 5.3 ms k - > z 4.8 / ...... output< - x time : 13.2ms 就a來看 最短時間是5.3 希望得到的正確結果: 顯示最短的時間 程式跑出來的錯誤結果: 我用C寫出來,結果沒錯. 只是程式碼寫了好多. 我先把每一行存進 1D string array , 再用 2D string array 存 input output 和 node, path 和 time, 把每一個結點分開, 然後用 for loop 從起點開始 一個一個 找它可能的路徑, 光 debug 就花了好多時間. 想請問有什麼好的儲存方式和搜尋路徑時間的方式 ? 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) 補充說明: 之前學過 list, queue, stack in Java, 但好像都不能上面的路徑問題 一個結點有多個入口和出口, 希望各位能提供點意見 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 72.211.146.183

09/30 11:12, , 1F
基本的2維矩陣表示法, 2維稀疏矩陣表示法
09/30 11:12, 1F

09/30 11:12, , 2F
假設不會有cycle存在的話 你可以試著把問題轉成DAG
09/30 11:12, 2F

09/30 11:12, , 3F
從你的圖來看,Floyd Warshall不能解嗎?
09/30 11:12, 3F

09/30 12:17, , 4F

09/30 23:56, , 5F
哇感謝 x 大大 那個網站很好
09/30 23:56, 5F
文章代碼(AID): #1Ce_yF2b (C_and_CPP)