Code to be written in python:
Correct answer will be automatically awarded the brainliest!
Since you now have a good understanding of the new situation, write a new num_of_paths function to get the number of ways out. The function should take in a map of maze that Yee Sian sent to you and return the result as an integer. The map is a tuple of n tuples, each with m values. The values inside the tuple are either 0 or 1. So maze[i][j] will tell you what's in cell (i, j) and 0 stands for a bomb in that cell.
For example, this is the maze we saw in the previous question:
((1, 1, 1, 1, 1, 1, 1, 1, 0, 1),
(1, 0, 0, 1, 1, 1, 0, 0, 1, 1),
(0, 1, 1, 1, 0, 0, 1, 1, 1, 0),
(1, 1, 0, 1, 1, 1, 1, 0, 1, 1),
(0, 1, 0, 1, 0, 0, 1, 0, 1, 0),
(1, 0, 1, 1, 1, 1, 0, 1, 1, 1),
(0, 1, 1, 1, 1, 1, 1, 1, 1, 0),
(1, 0, 1, 0, 0, 1, 1, 0, 1, 1),
(1, 0, 1, 1, 1, 0, 1, 0, 1, 0),
(1, 1, 0, 1, 0, 1, 0, 1, 1, 1))
Note: You should be using dynamic programming to pass time limitation test.
Hint: You might find the following algorithm useful:
Initialize an empty table (dictionary), get the number of rows n and number of columns m.
Fill in the first row. For j in range m:
2.1 If maze[0][j] is safe, set table[(0, j)] to be 1 because there's one way to go there.
2.2 If maze[0][j] has a bomb, set table[(0, k)] where k >= j to be 0. Since one cell is broken along the way, all following cells (in the first row) cannot be reached.
Fill in the first column. For i in range n:
3.1 If maze[i][0] is safe, set table[(i, 0)] to be 1 because there's one way to go there.
3.2 If maze[i][0] has a bomb, set table[(i, 0)] and all cells under it to be 0. The reason is same as for the first row.
Main dynamic programming procedure - fill in the rest of the table.
If maze[i][j] has a bomb, set table[(i, j)] = 0.
Otherwise, table[(i, j)] = table[(i - 1, j)] + table[(i, j - 1)]
Return table[(n - 1, m - 1)]
Incomplete code:
def num_of_paths(maze):
# your code here
# Do NOT modify
maze1 = ((1, 1, 1, 1, 1, 1, 1, 1, 0, 1),
(1, 0, 0, 1, 1, 1, 0, 0, 1, 1),
(0, 1, 1, 1, 0, 0, 1, 1, 1, 0),
(1, 1, 0, 1, 1, 1, 1, 0, 1, 1),
(0, 1, 0, 1, 0, 0, 1, 0, 1, 0),
(1, 0, 1, 1, 1, 1, 0, 1, 1, 1),
(1, 1, 0, 1, 0, 1, 0, 0, 1, 1),
(0, 1, 1, 1, 1, 1, 1, 1, 1, 0),
(1, 0, 1, 0, 0, 1, 1, 0, 1, 1),
(1, 0, 1, 1, 1, 0, 1, 0, 1, 0),
(1, 1, 0, 1, 0, 1, 0, 1, 1, 1))
maze2 = ((1, 1, 1, 1, 1, 1, 1, 1, 1),
(1, 1, 1, 1, 1, 1, 1, 1, 1),
(1, 1, 1, 1, 1, 1, 1, 1, 1),
(1, 1, 1, 1, 1, 1, 1, 1, 1),
(1, 1, 1, 1, 1, 1, 1, 1, 1),
(1, 1, 1, 1, 1, 1, 1, 1, 1),
(1, 1, 1, 1, 1, 1, 1, 1, 1))
maze3 = ((1, 0, 1, 1),
(1, 0, 1, 1),
(1, 0, 1, 1),
(1, 0, 1, 1),
(1, 0, 1, 0),
(1, 0, 0, 1))
Test Cases:
num_of_paths(maze1) 2
num_of_paths(maze2) 3003
num_of_paths(maze3) 0