Unique Paths III

On a 2-dimensional grid, there are 4 types of squares:

  • 1represents the starting square. There is exactly one starting square.

  • 2represents the ending square. There is exactly one ending square.

  • 0represents empty squares we can walk over.

  • -1represents obstacles that we cannot walk over.

Return the number of 4-directional walks from the starting square to the ending square, thatwalk over every non-obstacle square exactly once.

Example

Example 1:

Input: 
[[1,0,0,0],[0,0,0,0],[0,0,2,-1]]
Output: 
2
Explanation: 
We have the following two paths: 
1. (0,0),(0,1),(0,2),(0,3),(1,3),(1,2),(1,1),(1,0),(2,0),(2,1),(2,2)
2. (0,0),(1,0),(2,0),(2,1),(1,1),(0,1),(0,2),(0,3),(1,3),(1,2),(2,2)

Example 2:

Input: 
[[1,0,0,0],[0,0,0,0],[0,0,0,2]]
Output: 
4
Explanation: 
We have the following four paths: 
1. (0,0),(0,1),(0,2),(0,3),(1,3),(1,2),(1,1),(1,0),(2,0),(2,1),(2,2),(2,3)
2. (0,0),(0,1),(1,1),(1,0),(2,0),(2,1),(2,2),(1,2),(0,2),(0,3),(1,3),(2,3)
3. (0,0),(1,0),(2,0),(2,1),(2,2),(1,2),(1,1),(0,1),(0,2),(0,3),(1,3),(2,3)
4. (0,0),(1,0),(2,0),(2,1),(1,1),(0,1),(0,2),(0,3),(1,3),(1,2),(2,2),(2,3)

Example 3:

Note

Time(4^mn)

Space(m*n)

暴力backtracking去搜索,直到到达终点的时候,路径点都被访问

返回值是路径数目

Code

Last updated