vector<Point> BFS(Point& s,Point& e,Point maze[][MaxSize],vector<Point> path)
{
/*
将visited[i][j]初始化为(-1,-1),起点初始为它本身
*/
for(...)
for(...)
queue<Point> open,closed;
//初始结点放入OPEN表
int flag=0;//是否找到解
while(!open.empty ()&&(flag!=1))
{
//取当前队头,移出OPEN,放入CLOSED
//计算相邻结点
for(int i=0;i<MaxSize;i++)
{
if(是解)
{
visited[neighbor.x][neighbor.y]=n;
visited[neighbor.x][neighbor.y].op.p =t;
flag=1;
break;//找到解,跳出循环
}
//判断结点是否合法并且未访问过:判断是否合法即判断n能否到neighbor
if(合法且未访问过)
{
open.push (maze[neighbor.x ][neighbor.y ]);
visited[neighbor.x][neighbor.y]=n;
visited[neighbor.x][neighbor.y].op.p =t;
}
}
}
path.push_back(e);
while(!(visited[x][y]==s))
{
//找到父结点
path.push_back (visited[x][y]);
x=visited[x][y].x,y=visited[x][y].y ;
}
path.push_back (s);
return path;
}
文章标题
最新推荐文章于 2022-05-12 11:32:07 发布