LeetCode

来源:互联网 发布:tcp ip网络协议分析 编辑:程序博客网 时间:2024/04/30 09:55

解题代码:

classSolution {

public:

    boolin(vector<vector<char>>& board,int i,int j){

       if(i>=0&&i<board.size()&&j>=0&&j<board[0].size())return true;

        else return false;

    }

    voidcheck(vector<vector<char>>& board,int i,int j){

        if(!in(board,i,j)) return;

        if(board[i][j]=='E'){

            int count=0;

           if(in(board,i-1,j-1)&&board[i-1][j-1]=='M')

                    count++;

            if(in(board,i-1,j)&&board[i-1][j]=='M')

                count++;

           if(in(board,i-1,j+1)&&board[i-1][j+1]=='M')

                    count++;

           if(in(board,i,j-1)&&board[i][j-1]=='M')

                count++;

           if(in(board,i,j+1)&&board[i][j+1]=='M')

                count++;

           if(in(board,i+1,j-1)&&board[i+1][j-1]=='M')

                    count++;

           if(in(board,i+1,j)&&board[i+1][j]=='M')

                count++;

           if(in(board,i+1,j+1)&&board[i+1][j+1]=='M')

                    count++;

 

            if(count>0){

                board[i][j]='0'+count;

            }

            else{

                board[i][j]='B';

                check(board,i-1,j-1);

                check(board,i-1,j);

                check(board,i-1,j+1);

                check(board,i,j-1);

                check(board,i,j+1);

                check(board,i+1,j-1);

                check(board,i+1,j);

                check(board,i+1,j+1);               

            }

        }           

    }

    vector<vector<char>>updateBoard(vector<vector<char>>& board, vector<int>&click) {

       

        if(board[click[0]][click[1]]=='M'){

            board[click[0]][click[1]]='X';

            return board;

        }

        check(board,click[0],click[1]);

        return board;

    }

};

解题思路:

本题主要是在模拟扫雷游戏中的过程,若选中雷,则结束游戏,若选中的格子没有雷,就判断选中的区域周围八个格子中是否有雷,若有,就显示周围雷的总数,若无,就要对它周围的八个格子都要尽心检查。因此可以使用递归的方法对格子进行检查。其中需要注意的地方主要有两个,一个是检查的格子是否在边界的位置,另一个是若某个格子已经被检测过,显示为‘B’,就不需要继续进行检测。

0 0
原创粉丝点击