亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Dijkstra 算法給出錯誤的最短路徑

Dijkstra 算法給出錯誤的最短路徑

動漫人物 2022-05-12 15:45:38
我將我的C++實現轉換Dijkstra's Algorithm為Java. 當我運行我的Java代碼時,我沒有得到預期的輸出C++從我的代碼中預期:Minimum distance for source vertex 0 to reach vertex 0 is 0Minimum distance for source vertex 0 to reach vertex 1 is 4Minimum distance for source vertex 0 to reach vertex 2 is 12Minimum distance for source vertex 0 to reach vertex 3 is 19Minimum distance for source vertex 0 to reach vertex 4 is 21Minimum distance for source vertex 0 to reach vertex 5 is 11Minimum distance for source vertex 0 to reach vertex 6 is 9Minimum distance for source vertex 0 to reach vertex 7 is 8Minimum distance for source vertex 0 to reach vertex 8 is 14實際來自Java代碼:Minimum distance for source vertex 0 to reach vertex 0 is 0Minimum distance for source vertex 0 to reach vertex 1 is 4Minimum distance for source vertex 0 to reach vertex 2 is 2Minimum distance for source vertex 0 to reach vertex 3 is 7Minimum distance for source vertex 0 to reach vertex 4 is 9Minimum distance for source vertex 0 to reach vertex 5 is 2Minimum distance for source vertex 0 to reach vertex 6 is 1Minimum distance for source vertex 0 to reach vertex 7 is 1Minimum distance for source vertex 0 to reach vertex 8 is 2我試圖在我的 Java 代碼中尋找一個錯誤,我仔細檢查了我是否正確復制了我的 C++ 代碼,我沒有發現任何不同之處。我已經花了很多時間調試我的代碼。我不明白出了什么問題!我急需幫助,謝謝!
查看完整描述

1 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

Arrays.fill(adj, new ArrayList<IPair>())

相當于:

List<IPair> list = new ArrayList<>();

Arrays.fill(adj, list)

這意味著您在所有數組元素中存儲相同的對象。 List當您更改 的List對象時adj[x],它會更改List所有adj元素的對象,因為它是同一個對象。解決方案是在每個元素

中存儲一個新對象:Listadj


//Arrays.fill(adj, new ArrayList<IPair>());

for (int i = 0; i < V; ++i) {

   adj[i] = new ArrayList<>();

}


查看完整回答
反對 回復 2022-05-12
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號