const int dx[] = {-1,0,1,0,-1,-1,1,1};
const int dy[] = {0,1,0,-1,1,-1,1,-1};
class Solution {
public:
typedef pair<int,int> P;
queue<P> q;
bool vis[51][51] = {0};
vector<vector<char>> updateBoard(vector<vector<char>>& board, vector<int>& click) {
int x = click[0], y = click[1], m = board.size(), n = board[0].size();
if(board[x][y] == 'M'){
board[x][y] = 'X';
return board;
}
if(board[x][y]=='E') q.push(make_pair(x,y));
vis[x][y] = 1;
while(q.size()){
P p = q.front();
q.pop();
int x = p.first;
int y = p.second;
int cnt = 0;
for(int k=0;k<8;k++){
int nx = x+dx[k];
int ny = y+dy[k];
if(nx>=0 && nx<m && ny>=0 && ny<n){
if(board[nx][ny]=='M'){
cnt++;
}
}
}
if(cnt==0){
board[x][y] = 'B';
for(int k=0;k<8;k++){
int nx = x+dx[k];
int ny = y+dy[k];
if(nx>=0 && nx<m && ny>=0 && ny<n){
if(board[nx][ny]=='E' && !vis[nx][ny]){
//注意打标记的时机
q.push(make_pair(nx,ny));
vis[nx][ny] = 1;
}
}
}
}else{
board[x][y] = char(cnt+'0');
}
}
return board;
}
};
LeetCode 529. 扫雷游戏 (BFS玩玩小游戏)
猜你喜欢
转载自blog.csdn.net/qq_44846324/article/details/107641747
今日推荐
周排行