c++ - 广度优先搜索段错误
问题描述
我有一个 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;
}
解决方案
推荐阅读
- python - 在列表上运行 for 循环并将结果保存在数据框中
- spring - Spring RestTemplate 和 HttpClient 连接池限制
- docker - CI/CD 和部署的 Docker 实践
- c# - 从动作方法点击获取锚标签href
- node.js - AWS Lambda 直接调用发送两个即时响应
- python-3.x - catchup = False,为什么还要安排两次计划运行?
- javascript - 如何在没有 jQuery 的情况下制作幻灯片(上/下)?
- memory - 为什么在 MIPS 32 位架构中写入内存需要三个间隔?
- hyperledger-fabric - 我们可以在超级账本结构中运行没有 tls 的 RAFT 排序节点吗?
- mysql - 删除 SQL 查询中的重复项