题解 | #矩阵中的路径#

矩阵中的路径

http://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6

简单的dfs,做一下简单的判断即可,记得引用传参

class Solution {
public:
    vector<vector<bool>> search_map_;
    int row_;
    int col_;
    bool is_success_ = false;//
    void DFS(vector<vector<char> >& matrix,int x,int y,int cur,const string& word){
        if(is_success_)return;
        if(x >= row_||y >= col_ || x<0 || y<0 ){// limit
            return;
        }
        if(search_map_[x][y]== true || word[cur] != matrix[x][y]){
            // current char is not right or searched
            return;
        }
        if(cur == word.size()-1){// the last char
            is_success_ = true;
            return;
        }
        search_map_[x][y]=true;
        DFS(matrix,x+1,y,cur+1,word);
        DFS(matrix,x-1,y,cur+1,word);
        DFS(matrix,x,y+1,cur+1,word);
        DFS(matrix,x,y-1,cur+1,word);
        search_map_[x][y]=false; // reset search item
    }

    bool hasPath(vector<vector<char> >& matrix, string word) {
        if(matrix.empty()||word.empty()){
            return false;
        }
        row_ = matrix.size();
        col_  = matrix[0].size();
        for(int i=0;i<row_;i++){
            search_map_.push_back(vector<bool>(col_,false));
        }
        for(int i=0;i<row_;i++){
            for(int j=0;j<col_;j++){
                if(matrix[i][j] == word[0]){
                    DFS(matrix,i,j,0,word);
                    if(is_success_){
                        return true;
                    }
                }
            }
        }
        return false;
    }
};
全部评论

相关推荐

能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:06
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务