为了账号安全,请及时绑定邮箱和手机立即绑定

数组中两点之间的距离

数组中两点之间的距离

饮歌长啸 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 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信