C 如何打印迷宫中从源到目标的BFS路径(或如何获得第一步)?
这是一个与你帮助我很多的另一个问题相关的问题 我的新问题是,有没有办法将找到的路径从C 如何打印迷宫中从源到目标的BFS路径(或如何获得第一步)?,c,graph,path-finding,maze,C,Graph,Path Finding,Maze,这是一个与你帮助我很多的另一个问题相关的问题 我的新问题是,有没有办法将找到的路径从源单元格打印到目标单元格?或者,有没有一种方法可以只从pred中获得第一步,而不迭代所有步骤 在我在另一个问题中得到的(非常有用)答案中,有人建议我获得从目标到源的路径,这非常有用,但为了改进我的代码,我选择了从源到目标的路径 我的问题是,我正试图编写一个类似流氓的游戏,我必须告诉一个怪物他的下一步行动是哪一步,我认为迭代所有pred数组以获得一步行动是浪费资源 提前感谢您的帮助。现在您已经绘制了路径,请在怪物旁
源
单元格打印到目标
单元格?或者,有没有一种方法可以只从pred
中获得第一步,而不迭代所有步骤
在我在另一个问题中得到的(非常有用)答案中,有人建议我获得从目标
到源
的路径,这非常有用,但为了改进我的代码,我选择了从源
到目标
的路径
我的问题是,我正试图编写一个类似流氓的游戏,我必须告诉一个怪物他的下一步行动是哪一步,我认为迭代所有pred
数组以获得一步行动是浪费资源
提前感谢您的帮助。现在您已经绘制了路径,请在怪物旁边查找下一个
*
:
if (G->nodes[T.row + A][T.col + B] == '*') {
//kept for my sanity: pred[G->T.row*G->col + G->T.col]
doMove(); //don't forget to change the '*' into 'T', then the old spot to ' '
}
要向上移动,请选中a=-1;B=0
。要向下移动,请选中offsetA=1;偏移量b=0。右:A=0;B=-1,左:A=0;B=1
因为您的映射非常简单,而且分支不太远,所以我建议您选择一种更快的算法。BFS倾向于搜索最近的路径,对于长路径不是很有效。Djikstra是BFS的更好实现,允许将成本分配给边缘。A*是游戏中使用的最佳搜索,因为它是Djikstra的算法,在没有障碍的情况下,通过利用目标知识来加速(收敛更快)