c++ - How do you find the shortest path after the BFS algorithm? -


while( !q.is_empty() ) {   loc = q.remove_from_front();    //cout << loc.row << " " << loc.col << endl;   if( (loc.row-1) >= 0) //north   {      loc2.row = loc.row-1;      loc2.col = loc.col;       if(maze[loc2.row][loc2.col] != '#' && visited[loc2.row][loc2.col] == false)      {         visited[loc2.row][loc2.col] = true;          q.add_to_back(loc2);          //loc = predecessor[loc.row][loc.col];         predecessor[loc2.row][loc2.col] = loc;          if(maze[loc2.row][loc2.col] == 'f')         {            result = 1;            maze[loc2.row][loc2.col] = '*';             break;         }      }   }    if(loc.col-1 >= 0) //west   {      loc2.row = loc.row;      loc2.col = loc.col-1;       if(maze[loc2.row][loc2.col] != '#' && visited[loc2.row][loc2.col] == false)      {         visited[loc2.row][loc2.col] = true;          q.add_to_back(loc2);          //loc = predecessor[loc.row][loc.col];         predecessor[loc2.row][loc2.col] = loc;          if(maze[loc2.row][loc2.col] == 'f')         {            result = 1;            maze[loc2.row][loc2.col] = '*';             break;         }      }   }    if(loc.row+1 < rows) //south   {      loc2.row = loc.row+1;      loc2.col = loc.col;       if(maze[loc2.row][loc2.col] != '#' && visited[loc2.row][loc2.col] == false)      {         visited[loc2.row][loc2.col] = true;          q.add_to_back(loc2);         // loc = predecessor[loc.row][loc.col];        predecessor[loc2.row][loc2.col] = loc;          if(maze[loc2.row][loc2.col] == 'f')         {            result = 1;            maze[loc2.row][loc2.col] = '*';             break;         }      }   }    if(loc.col+1 < cols) //east   {      loc2.row = loc.row;      loc2.col = loc.col+1;       if(maze[loc2.row][loc2.col] != '#' && visited[loc2.row][loc2.col] == false)      {         visited[loc2.row][loc2.col] = true;          q.add_to_back(loc2);          //loc = predecessor[loc.row][loc.col];         predecessor[loc2.row][loc2.col] = loc;          if(maze[loc2.row][loc2.col] == 'f')         {            result = 1;            maze[loc.row][loc.col] = '*';             break;         }      }   } }  if(result == 1) {    while()   {       //not sure...   } } 

this bfs algorithm , main reason asked question because other questions similar own question tends done vectors. haven't learn vectors yet. trying print shortest path using '' characters display on valid elements. should in bounds, no walls visited (walls '#' characters), , no element should visited twice. know if set predecessor 2d array correctly, shortest path should displayed correctly. however, not sure if did set correctly , how fill in path '' characters...


Comments

Popular posts from this blog

asynchronous - C# WinSCP .NET assembly: How to upload multiple files asynchronously -

aws api gateway - SerializationException in posting new Records via Dynamodb Proxy Service in API -

asp.net - Problems sending emails from forum -