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;
}
};
ソードフィンガーオファーインタビュー質問12.マトリックス内のパス[中]
おすすめ
転載: blog.csdn.net/qq_41041762/article/details/105892300
おすすめ
ランキング