首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算n_puzzle问题的曼哈顿距离?

计算n_puzzle问题的曼哈顿距离?
EN

Stack Overflow用户
提问于 2021-11-17 10:30:51
回答 1查看 37关注 0票数 0

我正在尝试计算n_puzzle问题中的每个瓦片,其中瓦片被放错了位置,找到到达正确位置所需的移动次数。

例如,3x3网格,如果瓷砖1在左上角(0,0),而它应该在右下角(2,2),它将需要4步才能到达目标。

我将拼图保存为表单[0, 0, [0, 1, 2], [3, 4, 5], [6, 7, 8]],其中前两个值表示空白块零的坐标。到目前为止,我有一个计算放错了多少块的方法:

代码语言:javascript
复制
def GetDist(self):
    if self.value == self.goal:
        return 0
    dist = 0
    for a, b in zip(self.value[2], self.goal[2]):
        for g, t in zip(a, b):
            if g != t:
                dist += 1
    return dist

任何建议都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-17 10:34:56

假设错位的瓦片在位置(x,y),而正确的位置应该是(w,z)。将平铺移动到正确位置所需的移动次数为:

代码语言:javascript
复制
n_moves = abs(x - w) + abs(y - z)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70002720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档