class coord
{
public:
  int x;
  int y;
};

class SolveMaze
{
public:
  SolveMaze() { location.x = location.y = 0; }
  bool Explore();
private:
  list<coord> visited;
  coord location;
};

bool Explore()
{
  // Determine if we've already been here
  if (visited.found(location))
    return false;

  // Base case, we are at an exit
  if (HasLadder()) return true;

  // Remember that we have been here
  visited.push(location);

  // Try all four directions
  for(direction = 0; direction < 4; ++direction)
  {
    if (TryMove(direction))
    {
      coord prev(location);  // Copy current location

      // Track our current location
      switch(direction)
      {
        case 0: --location.y; break;
        case 1: ++location.x; break;
        case 2: --location.x; break;
        case 3: ++location.y; break;
      }

      // Explore from new location
      if (this->Explore()) return true;

      TryMove(3-direction);  // Assume 3-direction is opposite move of
direction

      // Back out location
      location = prev;
    }
  }

  // Remove current location from list
  visited.pop();

  // No exit found
  return false;
}

On Mar 2, 9:05 am, bittu <shashank7andr...@gmail.com> wrote:
> You are in a maze(like a labyrinth), and you open your eyes so you
> don't know your position. The maze has walls and you can move only in
> up, right, left and down directions. You can escape the maze when you
> find a ladder.
>
> The following API is given:
> bool TryMove(direction) - returns true when you don't hit a wall;
> bool HasLadder() - return true if you found the ladder.
>
> Write a method bool Explore() that returns true if you can escape the
> maze, false otherwise. Also, provide test cases.
>
> A Good Explanation & Pseudo-code, Algorithmic discussion
> needed..Object Oriented is Also Welcome
>
> Thanks & Regards
> Shahsank

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to