目录
整体思路:
代码设计:
代码呈现:
java
class Solution {
int ret,step;
int m,n;
boolean[][] vis;
public int uniquePathsIII(int[][] grid) {
m = grid.length;
n = grid[0].length;
vis = new boolean[m][n];
int bx = 0;
int by = 0;
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++){
if(grid[i][j] == 0) step++;
else if(grid[i][j] == 1){
bx = i;
by = j;
}
}
step += 2;
vis[bx][by] = true;
dfs(grid,bx,by,1);
return ret;
}
int[] dx = {0,0,-1,1};
int[] dy = {-1,1,0,0};
public void dfs(int[][] grid,int i,int j, int count){
if(grid[i][j] == 2) {
if(count == step) ret++;
return;
}
for(int k = 0; k < 4; k++){
int x = i + dx[k];
int y = j + dy[k];
if(x >= 0 && x < m && y >= 0 && y < n && !vis[x][y] && grid[x][y] != -1){
vis[i][j] = true;
dfs(grid,x,y,count+1);
vis[x][y] = false;
}
}
}
}