作者:faaronzheng 轉載請註明出處!
當時課程設計的題目是管道鋪設施工的最佳選擇方案:N個居民區之間要鋪設煤氣管道。假設任意兩個居民區之間都可以鋪設煤氣管道,但代價不同,要求事先將任意兩個居民區之間鋪設煤氣管道的代價存入磁盤文件中。設計一個最佳方案使得這N個居民區之間鋪設煤氣管道所需代價最小,並將結果以圖形式在屏幕上輸出。
我用C#簡單地實現了一下。Dijkstra算法是用c++寫的,通過託管的機制在c#裏面使用的。別問我爲什麼要這麼複雜的做,可能我當時太無聊,只是想嘗試在一種語言中調用另一種語言。至於Dijkstra算法和託管我就不多說了,網上的例子和講解很多。感興趣的可以自己搜索一下。
選擇城市數量和路線數量後可以通過單擊在窗體上添加一個控件(城市)
通過先後單擊兩個城市爲其添加路線,添加完成後選擇始發地和目的地。
紅色顯示的爲最佳方案(最短路徑)
題目所要求的代價最小我是用兩點之間距離代替的。顯示的數字就是代價(距離)。
由於當時所學有限,這個程序的結構不是很好,也算是一個反面教材。感興趣或有需要的可以下載看看。這個程序存在一些bug,但是不影響使用。
源代碼下載
http://download.csdn.net/detail/faaronzheng/7322669
發現bug或有好的改進請告訴我,大家共同學習。