首页 > 其他 > 详细

529. 扫雷游戏 - 8月20日

时间:2020-08-20 16:28:01      阅读:75      评论:0      收藏:0      [点我收藏+]

题目

529. 扫雷游戏

技术分享图片

我的思路

深搜:
如果点击的方块是‘M’,那么直接修改为X,并返回;
如果点击的方块是‘E’,先判断周围有多少个M,如果有n个,那么把字符修改为‘n’;如果n是0,那么对周围的个方块依次重复“深搜”,并修改为‘B’。
返回

时间复杂度和空间复杂度都是Omn也就是矩阵大小

我的实现

class Solution {
public:
    void count(vector<vector<char>>& board, vector<int>& click){
        vector<int> x = {0,0,1,1,1,-1,-1,-1};
        vector<int> y = {1,-1,0,1,-1,0,1,-1};
        int result= 0;
        for(int i=0;i<8;i++){
            if((x[i]+click[0])>=0&&(x[i]+click[0])<board.size()&&(click[1]+y[i])>=0&&(click[1]+y[i])<board[0].size()){
                if(board[(x[i]+click[0])][(y[i]+click[1])]==M){
                    result++;
                }
            }
        }
        if (result==0){
            for(int i=0;i<8;i++){
            if((x[i]+click[0])>=0&&(x[i]+click[0])<board.size()&&(click[1]+y[i])>=0&&(click[1]+y[i])<board[0].size()){
                if(board[(x[i]+click[0])][(y[i]+click[1])]==E){
                    vector<int> temp = {(x[i]+click[0]),(y[i]+click[1])};
                    dpSearch(board,temp);
                }
            }
        }
            board[click[0]][click[1]]=B;
        }else{
            board[click[0]][click[1]]=result+0;
        }
    }
    void dpSearch(vector<vector<char>>& board, vector<int>& click){
        if(click[0]<board.size()&&click[0]>=0&&click[1]>=0&&click[1]<board[0].size()){
            if(board[click[0]][click[1]]==M){
                board[click[0]][click[1]] = X;
                return;
            }else{
                if(board[click[0]][click[1]]==E){
                     board[click[0]][click[1]]=T;
                   count(board,click);
                }
            }

        }
    }
    vector<vector<char>> updateBoard(vector<vector<char>>& board, vector<int>& click) {
        dpSearch(board,click);
        return board;
    }

};

 

拓展学习

借助队列使用广搜也可以,当四周不存在地雷时,把四周的节点加入到队列中。

 

529. 扫雷游戏 - 8月20日

原文:https://www.cnblogs.com/BoysCryToo/p/13534924.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!