[英]Calculating distance in a 2D array, Non diagonal
我在Java中實現了以下內容:
[1,1][1,2][1,3][1,4]
[2,1][2,2][ B ][2,4]
[ A ][3,2][3,3][3,4]
我希望能夠計算[A]和[B]之間的最小距離,而不是對角移動,我已經在線搜索,但我不確定如何說出我正在尋找的內容。 到目前為止,我已經能夠使用以下方法計算對角線距離:
dMin = Math.min(dMin, Math.abs((xDistance - yDistance)));
有人可以給我一個我可以在線尋找的算法嗎? 任何幫助表示贊賞。 謝謝你的時間:)
預期產出是:
Distance = 3 //Not Distance = 2 (as it would be diagonally).
它被稱為曼哈頓距離 ,可以通過以下方式輕松計算:
distance = abs(ydistance) + abs(xdistance)
也就是說,您必須垂直行進的單元格數量加上您必須水平行進的單元格數量,就像乘坐出租車穿過城市街道網格一樣。
您希望點的x值之間的絕對差值加上點的y值之間的絕對差值。
即:
dMin = Math.abs(A.x - B.x) + Math.abs(A.y - B.y)
這被稱為曼哈頓距離
您希望沿X
軸的差異加上沿Y
軸的差異。 像這樣的東西:
int minDistance = Math.abs(A.x - B.x) + Math.abs(A.y - B.y);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.