Kumar-laxmi / Algorithms

A Repository for algorithms in C, C++, Python and Java
Apache License 2.0
322 stars 366 forks source link

Maze solving problem using C,C++, Python, Java #790

Closed singhapeksha closed 1 year ago

singhapeksha commented 1 year ago

Is your feature request related to a problem? Please describe. In Backtracking file there is no solution for the Maze Solving Problem.

Describe the solution you'd like The maze solving problem involves finding a path from a starting point to a goal point in a given maze. Backtracking is a commonly used algorithmic technique to solve this problem efficiently. Here's how the maze solving problem can be approached using backtracking:

Define the Maze: Represent the maze as a grid, where each cell can be either a wall or a passage. Typically, walls are represented as obstacles, and passages are represented as open cells. Identify the starting point and the goal point in the maze.

Define the Backtracking Algorithm:

Start at the starting point in the maze. Explore neighboring cells to find a valid path. Move to an adjacent cell if it is not a wall and has not been visited before. Mark the current cell as visited to avoid revisiting it. Recursively apply the backtracking algorithm to explore all possible paths from the current cell. If the goal point is reached, the maze is solved. If all possible paths have been explored from the current cell and the goal point has not been reached, backtrack to the previous cell and continue exploring other paths. Implement the Backtracking Algorithm: Use a recursive function to implement the backtracking algorithm. The function takes the current position in the maze as input and returns a boolean value indicating whether a valid path to the goal point is found.

Implement the Maze Solver: Start the maze solver function by calling the backtracking algorithm with the starting point as the initial position. If the backtracking algorithm returns true, a valid path to the goal point is found. Otherwise, there is no solution.

Handle the Maze Constraints: During the backtracking process, ensure that the algorithm respects the constraints of the maze, such as not going outside the maze boundaries or passing through walls.

Track the Path: To visualize the solution, keep track of the path taken from the starting point to the goal point. You can store the path as a list of coordinates or any other suitable data structure.

By applying backtracking recursively, the algorithm explores different paths in the maze until a valid path to the goal point is found or all possibilities are exhausted. Backtracking allows efficient exploration of the maze by avoiding unnecessary paths and quickly backtracking when a dead end is reached.

Describe alternatives you've considered The Problem can also be solved using recursion and Dynamic programing.

singhapeksha commented 1 year ago

Please assign this to me!!

Kumar-laxmi commented 1 year ago

Assigned! @singhapeksha : C, C++, Python and Java

Kumar-laxmi commented 1 year ago

@singhapeksha What is your status on this issue?

singhapeksha commented 1 year ago

@Kumar-laxmi doing will raise a pr soon