LC.529. 扫雷游戏(DFS)
思路: d f s dfs dfs即可,需要注意的是这里的相邻是 8 8 8连通。
class Solution {
public:int sx,sy,vis[55][55],n,m;//int d[4][2]={0,1,0,-1,1,0,-1,0};int d[8][2]={0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,-1,-1,1};bool jg(int x,int y){return x>=0&&x<n&&y>=0&&y<m;}void dfs(vector<vector<char>>& b,int x,int y){int cnt=0;for(int i=0;i<8;i++){int nx=x+d[i][0],ny=d[i][1]+y;if(jg(nx,ny))cnt+=(b[nx][ny]=='M');}if(cnt) b[x][y]=cnt+'0';else {b[x][y]='B';for(int i=0;i<8;i++){int nx=x+d[i][0],ny=d[i][1]+y;if(jg(nx,ny)&&b[nx][ny]=='E'){dfs(b,nx,ny);}}}}vector<vector<char>> updateBoard(vector<vector<char>>& b, vector<int>& c) {sx=c[0],sy=c[1];n=b.size(),m=b[0].size();if(b[sx][sy]=='M'){b[sx][sy]='X';return b;}else{dfs(b,sx,sy);return b;}}
};