You have to determine if it is possible to escape from a room. The room is an -by- grid with each position (cell) containing a positive integer. The rows are numbered and the columns are numbered . We use to refer to the cell in row and column .
You start in the top-left corner at and exit from the bottom-right corner at . If you are in a cell containing the value , then you can jump to any cell satisfying . For example, if you are in a cell containing a , you can jump to cell .
Note that from a cell containing a , there are up to four cells you can jump to: , or . If the room is a -by- grid, there isn't a row so only the first three jumps would be possible.
Note: The constraints and data have changed from the original problem.
You should implement the following procedure:
bool can_escape(int M, int N, std::vector<std::vector<int>> v)
- : the number of rows in the room.
- : the number of columns in the room.
- : a two-dimensional array of integers representing the values of the cells.
- This procedure should return true if it is possible to escape, and false otherwise.
Consider the following call.
can_escape(3, 4, [[0, 0, 0, 0, 0], [0, 3, 10, 8, 1], [0, 1, 11, 12, 12], [0, 6, 2, 3, 9]])
Starting in the cell at which contains a , one possibility is to jump to the cell at . This cell contains an so from it, you could jump to the cell at . This brings you to a cell containing from which you can jump to the exit at . Note that another way to escape is to jump from the starting cell to the cell at to the cell at to the exit.
This call should return true.
- is a by array.
- The first row and column of consists of 's. The remaining integers are between and , inclusive.
- (20 points)
- (30 points)
- (30 points)
- (20 points) No additional constraints