网站备案最新备案号,天津seo公司,psd做网站切片,wordpress素材. - 力扣#xff08;LeetCode#xff09;
题目简述#xff1a;扫雷#xff0c;点击一个格子#xff0c;返回整个地图的下一个状态。
对于边界元素#xff0c;可以设置两个数组#xff0c;index_row#xff0c;index_col#xff0c;遍历到一个格子需要搜索其周围格子…. - 力扣LeetCode
题目简述扫雷点击一个格子返回整个地图的下一个状态。
对于边界元素可以设置两个数组index_rowindex_col遍历到一个格子需要搜索其周围格子时使当前格子的值一次加上数组的值如果发现加上之后的值越界了则跳过此格子。
这样写很清晰节省了很多代码量。
class Solution {
public:vectorvectorinthasboom;int index_row[8]{0,0,1,1,1,-1,-1,-1},index_col[8]{-1,1,-1,1,0,-1,1,0};void count(int row,int col){for(int i0;i8;i){int temprowrowindex_row[i],tempcolcolindex_col[i];if(temprow0temprowhasboom.size()tempcol0tempcolhasboom[0].size())hasboom[temprow][tempcol];}// if(row0)// {// hasboom[row-1][col];// if(col0)hasboom[row-1][col-1];// if(colhasboom[0].size()-1)hasboom[row-1][col1];// }// if(rowhasboom.size()-1)// {// hasboom[row1][col];// if(col0)hasboom[row1][col-1];// if(colhasboom[0].size()-1)hasboom[row1][col1];// }// if(col0)hasboom[row][col-1];// if(colhasboom[0].size()-1)hasboom[row][col1];}vectorvectorchar updateBoard(vectorvectorchar board, vectorint click) {hasboom.resize(board.size());for(int i0;iboard.size();i){hasboom[i].resize(board[0].size(),0);}for(int i0;ihasboom.size();i){for(int j0;jhasboom[0].size();j){if(board[i][j]M){count(i,j);}}}queuepairint,intq;q.emplace(click[0],click[1]);while(!q.empty()){auto[row,col]q.front();q.pop();if(board[row][col]M){board[row][col]X;}else if(board[row][col]E){if(hasboom[row][col]0){board[row][col]B;for(int index0;index8;index){int temprowrowindex_row[index];int tempcolcolindex_col[index];if(temprow0||temprowboard.size()||tempcol0||tempcolboard[0].size())continue;else if(board[temprow][tempcol]M||board[temprow][tempcol]E)q.emplace(temprow,tempcol);}// if(row0)// {// if(board[row-1][col]M||board[row-1][col]E)// q.emplace(row-1,col);// if(col0(board[row-1][col-1]M||board[row-1][col-1]E))// q.emplace(row-1,col-1);// if(colboard[0].size()-1(board[row-1][col1]M||board[row-1][col1]E))// q.emplace(row-1,col1);// }// if(col0(board[row][col-1]M||board[row][col-1]E))// q.emplace(row,col-1);// if(colboard[0].size()-1(board[row][col1]M||board[row][col1]E))// q.emplace(row,col1);// if(rowboard.size()-1)// {// if(board[row1][col]M||board[row1][col]E)// q.emplace(row1,col);// if(col0(board[row1][col-1]M||board[row1][col-1]E))// q.emplace(row1,col-1);// if(colboard[0].size()-1(board[row1][col1]M||board[row1][col1]E))// q.emplace(row1,col1);// }}else{board[row][col]0hasboom[row][col];}}}return board;}
};