4
public int uniquePathsIII(int[][] grid) {6
int n = grid[0].length;7
for (int i = 0; i < m; i++) {8
for (int j = 0; j < n; j++) {14
for (int i = 0; i < m; i++) {15
for (int j = 0; j < n; j++) {16
if (grid[i][j] == 1) {17
return ways(grid, i, j, m, n, 0);24
public int ways(int[][] grid, int cr, int cc, int m, int n, int count) {25
if (cr < 0 || cr == m || cc < 0 || cc == n || grid[cr][cc] == -1) {28
if (grid[cr][cc] == 2) {29
if (count - 1 == walk) return 1;34
int[] r = {0, 1, 0, -1};35
int[] c = {1, 0, -1, 0};36
for (int i = 0; i < 4; i++) {37
ans += ways(grid, cr + r[i], cc + c[i], m, n, count + 1);