classSolution{int m,n;int[] dx ={0,0,-1,1,-1,-1,1,1};int[] dy ={-1,1,0,0,-1,1,-1,1};publicchar[][]updateBoard(char[][] board,int[] click){
m = board.length;
n = board[0].length;int x = click[0], y = click[1];//直接点到地雷if(board[x][y]=='M'){
board[x][y]='X';return board;}dfs(board,x,y);return board;}privatevoiddfs(char[][] board,int i,int j){//统计周围地雷的个数int count =0;for(int k =0; k <8; k++){int x = i + dx[k];int y = j + dy[k];if(x >=0&& x < m && y >=0&& y < n && board[x][y]=='M'){
count++;}}//去遍历未挖出的空方块//周围没有地雷if(count ==0){
board[i][j]='B';for(int k =0; k <8; k++){int x = i + dx[k];int y = j + dy[k];if(x >=0&& x < m && y >=0&& y < n && board[x][y]=='E'){dfs(board,x,y);}}}else{//有地雷:修改它周围地雷个数,并返回
board[i][j]=(char)(count +'0');return;}}}