c++ - 在 8 Puzzle | 中寻找曼哈顿距离的目标坐标C++

标签 c++ math distance

我试图找到一种方法来计算两个包含 0 到 8 之间数字的二维数组之间的曼哈顿距离。假设其中一个数组(8 拼图的目标)是:

1  2  3
4  5  6
7  8  0

我明白在 (x1 , y1) & (x2, y2) 之间, 这 曼哈顿距离 = |x1 - x2| + |y1 - y2|

我的代码看起来像这样:

for(x = 0; x < 3; x++){
    for(y = 0; y < 3; y++){
        int value = matrix[x][y];
        int targX; //Target X coordinate
        int targY; //Target Y coordinate
        int distX = abs(x - targX);
        int distY = abs(y - targY);
        mDist = mDist + distX + distY;
        }
}

我无法找到一种方法来获取任何特定值的目标坐标。

最佳答案

n 的目标坐标是 ((n-1) div 3, (n-1) mod 3)

上述值将假设原点 (0,0) 位于左上角,即放置 1 的正方形。 X坐标向右增加,Y坐标向下。

关于c++ - 在 8 Puzzle | 中寻找曼哈顿距离的目标坐标C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29470768/

相关文章:

python - 计算地球上两个坐标之间的距离

c++ - yaml-cpp 遍历未定义值的 map 的最简单方法

c++ - 与 MySQL 服务器通信的最佳方式是什么?

c++ - 在字符串中插入括号

算法跟踪大量洗牌

Java无法正确计算点到线的距离

c++ - 生成不同格式的图像字节数据

c++ - 我应该在传递结构时放置 & 吗?

javascript - 图 block 在网格中所属的位置

r - 在 LatLong 中工作时,gridDistance 是否计算大地距离? (R 中的栅格包)