我的a *路径查找算法仅适用于某些情况,但我不明白为什么。网格中的每个节点都是可步行的,因此从理论上讲,每个路径都应适用。我相信错误在这一行:

 PathFindingNode *neighbor = NULL;
            if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
             neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];

最佳答案

-(void)addNeighbors:函数中,该行

if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
    neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];

有错误,因为如果curNode在边界上,则不会将邻居添加到队列中。因此该算法将永远不会在四个角落(即[0,0],[gridX-1,0],[0,gridY-1],[gridX-1,gridY-1])到达endNode

关于ios - A *仅在某些情况下有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20834482/

10-11 22:08