path maze(m, r = 0, c = 0): if m == null || m.length() == 0 || m[0].length() == 0: throw rows = m.length() cols = m[0].length() path = new mazeInner(m, r, c, rows, cols, path) return path bool mazeInner(m, r = 0, c = 0, rows, cols, path, blocked = new bool[rows][cols]): if !(0 <= r < rows) || !(0 <= c < cols): return false if hasObstacle(m, r, c): return false if blocked[r][c]: return false if path.has(r, c): return false path.add((r, c)) if isExit(m, r, c): return true if (m, r+1, c, rows, cols, path, visited): return true if (m, r-1, c, rows, cols, path, visited): return true if (m, r, c+1, rows, cols, path, visited): return true if (m, r, c-1, rows, cols, path, visited): return true path.removeLast() blocked[r][c] = true return false bool isObstacle(m, r, c): return m[r][c] == -1 bool isExit(m, r, c): return m[r][c] == 1
Monday, March 26, 2018
find path out of a maze
For left, right, up, down directions.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment