递归过程大概就是这么一个过程、执行一般去下一级,最里面一级结束返回。
class Solution {
public:
bool exist(vector<vector<char>>& board, string word) {
if(board.size() == 0 || board[0].size() == 0)return false;
int row = 0;
int line = 0;
int idx = 0;
for(int row = 0; row < board.size(); row++)
{
for(int line = 0; line < board[row].size(); line++)
{
if(dfs(board,word,row,line,0))return true;
}
}
return false;
}
bool dfs(vector<vector<char>>& board, string word,int row, int line, int idx)
{
if(idx == word.size()) return true;
if(row < 0 || row >= board.size())return false;
if(line < 0 || line >= board[0].size()) return false;
if(board[row][line] != word[idx]) return false;
board[row][line] = '*';
if(
dfs(board,word,row+1,line,idx+1)
||dfs(board,word,row,line-1,idx+1)
||dfs(board,word,row,line+1,idx+1)
||dfs(board,word,row-1,line,idx+1)
)return true;
board[row][line] = word[idx];
return false;
}
};