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

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

數組中兩點之間的距離

數組中兩點之間的距離

飲歌長嘯 2022-04-28 17:14:19
我試圖找出數組中兩點之間的距離(或“步數”)。從該數組中的任何位置,到任何其他點。例如:如果有一個 5x5 矩陣的 PacMan 地圖,并且 Pacman 站在字段 row=0 和 column=0 上,他需要采取 8 步才能到達字段 r=5, c=5。但是,如果吃豆人站在 4x5 上,他需要多少步才能到達 3x3 場地?我拼命想弄清楚這一點。這是我到目前為止所得到的:1   public static void path() {2       int[][] ratings = new int[5][5];3       int value = 0;4       for(int i = 0; i<ratings.length; i++) {5           value = i;6           for(int j = 0; j<ratings[i].length; j++) {7               ratings[i][j] = value;8               value++;9               System.out.print("-"+ratings[i][j]);10          }11          System.out.println();12      }13  }輸出:-0-1-2-3-4-1-2-3-4-5-2-3-4-5-6-3-4-5-6-7-4-5-6-7-8如您所見,我正在嘗試為每個數組位置賦予一定的路徑等級。起點是 0 的點。例如,我如何設法獲得此輸出:-3-2-3-4-5-2-1-2-3-4-1-0-1-2-3-2-1-2-3-4-3-2-3-4-5我希望你們能幫助我解決這個問題。:)
查看完整描述

2 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

將當前的 X 和 Y 坐標作為參數。從值中減去這些并取絕對值。這給出了你想要的行為。它實際上總是與您的第一個輸出相同的距離表,但您給它一個偏移起始位置。


例如:


Current position (x1,y1) = 4,4.   

Wanted position  (x2,Y2) = 3,2   

Distance = absolute(x2-x1) + absolute(y2-y1) = abs(3-4) + abs(2-4) = 1 + 2 = 3

我修改了您的代碼以提供正確的偏移量表:


public static void path(int currentX, int currentY) {

  int[][] ratings = new int[5][5];

  int value = 0;

  for (int i = 0; i<ratings.length; i++) {

    value = Math.abs(i-currentX);

    for (int j = 0; j<ratings[i].length; j++) {

      ratings[i][j] = value + Math.abs(j-currentY);

      System.out.print("-"+ratings[i][j]);

    }

    System.out.println();

  }

}


查看完整回答
反對 回復 2022-04-28
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

另一種可能更清楚的方法是創建一個自定義距離方法,如下所示:


static int dist(int x1, int y1, int x2, int y2) {

  return Math.abs(x1 - x2) + Math.abs(y1 - y2);

}

然后使用它你的循環:


public static void path(int currX, int currY) {


  int[][] ratings = new int[5][5];

  for (int i = 0; i < ratings.length; i++) {

    for (int j = 0; j < ratings[i].length; j++) {

      ratings[j][i] = dist(j, i, currX, currY);

      System.out.print("-"+ratings[j][i]);

    }

    System.out.println();

  }

}


查看完整回答
反對 回復 2022-04-28
  • 2 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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