首页 > 解决方案 > 广度优先搜索段错误

问题描述

我有一个 BFS,它应该解决一个目前只解决短迷宫并返回其他迷宫的段错误的 BFS应该创建两个同样长的向量,每个向量都遵循一条路径。

std::vector<MazeNode> solveBFS(Maze &a_maze){

MazeNode * NextNode = a_maze.getFirstNode();
std::vector<MazeNode*> Final;
std::vector<MazeNode> Finals;
std::queue<vector<MazeNode*> > Qvec;



NextNode->setVisited();
Final.push_back(NextNode);
Qvec.push(Final);


while(!Qvec.empty() && Qvec.front().at(Qvec.front().size()-1) != a_maze.getLastNode()){
    cout << *Qvec.front().at(Qvec.front().size()-1) << endl;
    std::vector<MazeNode*> TempV = Qvec.front();
    MazeNode * Top = TempV.back();
    Qvec.pop(); 

    for(directions::nesw dir = directions::NORTH; dir < directions::WEST; dir = directions::nesw(dir + 1)){
           if(canTravel(Top->getDirectionNode(dir))){ 

            NextNode = Top->getDirectionNode(dir);
            NextNode->setVisited();
                NextNode->setVisited();

                TempV.push_back(NextNode);
                Qvec.push(TempV);
                TempV.pop_back();


           }
    }
}

for(int i = 0; i < Qvec.front().size(); i++){

    Finals.push_back(* Qvec.front()[i]);
}
return Finals;
}

标签: c++c++11

解决方案


推荐阅读