Code Explanation:
1. DP Table Initialization
dp = [[1]*c for _ in range(r)]
Creates a 2D list (dp) with r rows and c columns.
Every cell is initialized to 1.
Why 1? Because:
The first row and first column can only be reached in one way (all right or all down).
After this line, the DP table (dp) looks like this for r=4, c=3:
[
[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]
]
2. Filling the DP Table
for i in range(1, r):
for j in range(1, c):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
Starts from cell (1,1), since row 0 and column 0 are already known (only 1 path).
For each cell (i, j), the number of paths is:
dp[i-1][j]: from the cell above
dp[i][j-1]: from the cell to the left
Adds both to get total paths to current cell.
Table gets filled like this step by step:
[
[1, 1, 1], # row 0 (base row)
[1, 2, 3], # row 1
[1, 3, 6], # row 2
[1, 4, 10] # row 3
]
3. Return Final Answer
return dp[-1][-1]
dp[-1][-1] gives value at bottom-right corner.
Here: dp[3][2] = 10, which is the number of unique paths in a 4 x 3 grid.
4. Function Call
print(count_paths(4, 3))
This prints the result of the function — which is:
Final Output: 10
There are 10 unique paths in a 4×3 grid moving only right or down.
.png)

0 Comments:
Post a Comment