剑指 Offer 12. 矩阵中的路径
class Solution{
private:
vector<vector<char>> board;
string word;
public:
bool exist(vector<vector<char>>& my_board,string my_word){
this->board = my_board;
this->word = my_word;
for(int i = 0;i < my_board.size();i++){
for(int j = 0;j < my_board[0].size();j++){
if(dfs(i,j,0)){
return true;
}
}
}
return false;
}
bool dfs(int i,int j,int k){
if(i < 0 || i > board.size() - 1 || j < 0 || j > board[0].size() - 1 || board[i][j] != word[k]){
return false;
}
if(k == word.size() - 1){
return true;
}
char ch = board[i][j];
board[i][j] = 0;
bool ret = dfs(i - 1,j,k + 1) || dfs(i + 1,j,k + 1) || dfs(i,j - 1,k + 1) || dfs(i,j + 1,k + 1);
board[i][j] = ch;
return ret;
}
};