我试图找到一种方法来计算两个包含 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/