2.
class Solution {
public:
int dx[8]={0,0,1,-1,1,1,-1,-1};
int dy[8]={1,-1,0,0,1,-1,1,-1};
int m;
int n;
void dfs(vector<vector<char>>& board,int i,int j)
{
int count=0;
for(int k=0;k<8;k++)
{
int x=dx[k]+i;
int y=dy[k]+j;
if(x>=0&&x<m&&y>=0&&y<n&&board[x][y]=='M')
{
count++;
}
}
if(count)
{
board[i][j]=count+'0';
return;
}
else
{
board[i][j]='B';
for(int k=0;k<8;k++)
{
int x=dx[k]+i;
int y=dy[k]+j;
if(x>=0&&x<m&&y>=0&&y<n&&board[x][y]=='E')
{
dfs(board,x,y);
}
}
}
}
vector<vector<char>> updateBoard(vector<vector<char>>& board, vector<int>& click) {
m=board.size();
n=board[0].size();
int x=click[0];
int y=click[1];
if(board[x][y]=='M')
{
board[x][y]='X';
return board;
}
dfs(board,x,y);
return board;
}
};