1 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
我發(fā)現(xiàn)您的代碼存在三個(gè)問題:
在圖表中存儲(chǔ)你的起始力會(huì)產(chǎn)生歧義,因?yàn)槟銦o法判斷這條邊是你的力量還是敵人的力量作為權(quán)重。如果兩個(gè)城市相互連接,這將是一個(gè)問題,因?yàn)槟銜?huì)得到雙邊。在您的示例中,而是使用變量將其存儲(chǔ)在圖形類中的某個(gè)位置
double startingForce = 120;
你的放松號(hào)召在剩余部隊(duì)和傷亡之間以錯(cuò)誤的方式切換。對(duì)于調(diào)用公式,您需要剩余的部隊(duì),但輸出需要再次轉(zhuǎn)換為傷亡人數(shù)。
double casualtiesWithCurrentPath = startingForce - formula(startingForce - d.get(u), e.getWeight()); if (casualtiesWithCurrentPath < d.get(v)) d.put(v, casualtiesWithCurrentPath);
如果一個(gè)節(jié)點(diǎn)無法到達(dá),它就會(huì)有
infinity
人員傷亡,導(dǎo)致-infinity
該節(jié)點(diǎn)的剩余部隊(duì)。然而,通過將它們平方在formula
符號(hào)中會(huì)迷路,導(dǎo)致無限的力量,所以你需要計(jì)算double a = Math.signum(ourCity) * Math.pow(ourCity, 2);
反而
通過這些更改,我進(jìn)入{a=13.229217479686895, b=17.043698590130006, c=11.372195087997852, d=12.761947052363922, e=4.241630972097752, f=0.41739256898601695, g=1.678404338007681, h=0.0}
了示例
添加回答
舉報(bào)