Statement
Solution
Naive approach
The naive approach uses recursion to consider every possible path that the robot can take from the top-left corner of the grid to the bottom-right corner. The algorithm begins with the top-left corner and explores two branches: moving right and moving down. This process continues recursively, generating further branches for each valid move. Eventually, the recursion reaches the base cases:
If the robot reaches the bottom-right corner, a single path is counted.
If it goes out of bounds or reaches an edge, such a path is not counted.
The algorithm sums up the number of paths obtained through these recursive explorations and returns this number as the total number of unique paths.
Since this approach recalculates the overlapping subproblems, it becomes inefficient as the grid size grows, resulting in exponential time complexity. The robot takes a total of
Optimized approach using dynamic programming
Let’s look at the bottom-up dynamic programming approach to solve this problem. In this approach, solutions to smaller subproblems are stored in a table as they are computed, and these solutions are then used to solve larger subproblems until the main problem is solved.
For this specific problem, we start with solving the simplest cases along the first row and first column. These are straightforward because there's only one way to reach them. We save these solutions and then use them to find solutions for other cells by adding up the values from the cell above and the cell to the left. This process continues until we calculate the total unique paths to the bottom-right cell. The value in the bottom-right cell will represent the total number of unique paths. This approach avoids unnecessary calculations and is more efficient.