ソードフィンガーオファーインタビュー質問12.マトリックス内のパス[中]

インタビューの質問12。マトリックス内のパス

class Solution {
public:
    bool exist(vector<vector<char>>& board, string word) {
        if(board.empty())   return false;
        for(int i=0;i<board.size();i++){
            for(int j=0;j<board[0].size();j++){
                if(dfs(board,i,j,0,word))
                    return true;
            }
        }
        return false;
    }
    bool dfs(vector<vector<char>>& board,int i,int j,int k,string word){
        if(i<0||j<0||i>=board.size() || j>=board[0].size()|| board[i][j]!=word[k])
            return false;
        if(k==word.size()-1)  
            return true;
        char tmp=board[i][j];
        board[i][j]='/';
        bool res=dfs(board,i+1,j,k+1,word) || dfs(board,i,j+1,k+1,word) || dfs(board,i-1,j,k+1,word) || dfs(board,i,j-1,k+1,word);
        board[i][j]=tmp;
        return res;
    }

};


おすすめ

転載: blog.csdn.net/qq_41041762/article/details/105892300