如何在矩阵中移动以使用最少的移动次数达到目标

Posted

技术标签:

【中文标题】如何在矩阵中移动以使用最少的移动次数达到目标【英文标题】:how to move in a matrix to reach a goal using the least number of moves 【发布时间】:2020-04-17 13:15:41 【问题描述】:

我最近开始用 c 编程,我有一个问题要解决,实际上我正在开发一个小游戏,在第一阶段,我在矩阵上随机放置一些棋子,第二次我放置旗帜以征服 每个棋子都有一个目标索引,它对应于一个放置的旗帜,并且有许多移动来到达它 我怎样才能找到一条最佳路径,从起始索引引导我到达目标的移动次数

【问题讨论】:

建议:做一个graph 两个棋子可以同时占据一个位置吗? @SimonCrane 没有两个棋子可以占据不同的方格 【参考方案1】:

当涉及到一个矩阵时,您通常可以使用嵌套的 for 循环来遍历矩阵的所有点。由于每个 pawn 都有自己的目标标志,因此您应该在矩阵中为每个 pawn 和标志提供位置。例如,如果它是一个 6 x 6 矩阵,您的 pawn 位于 5,0 位置,而目标标志位于 0,0 位置,则您必须减少 pawn 的 y。但是,如果这个棋子的移动次数是 3,它就不可能到达旗帜。我想这是一个开始,然后你从那里开始?

【讨论】:

【参考方案2】:

我怎样才能找到一条从起始索引引导我到达目标的最佳路径,其中包含许多移动

如果我理解正确,您正在寻找寻路算法来确定最佳路径。

您可以使用 BFS(广度优先搜索)DFS(深度优先搜索),但还有更多算法,请查找信息 here,如果需要在你的浏览器中测试我推荐你这个github page

在代码方面,您可以在互联网上找到这些算法的实现,并直接在 *** 上找到大量信息。

【讨论】:

以上是关于如何在矩阵中移动以使用最少的移动次数达到目标的主要内容,如果未能解决你的问题,请参考以下文章

BFS八数码问题

LeetCode:最少移动次数使得数组元素相等||462

Leetcode 462.最少移动次数使数组元素相等

bzoj1054[HAOI2008]移动玩具

P4289 [HAOI2008]移动玩具

Luogu-P4289-[HAOI2008]移动玩具