https://leetcode.com/problems/word-search/
class Solution {
public:
bool exist_helper(vector<vector<char>> board, string word, int i,int j, int index)
{
if(index==word.size()-1) return true; //到达搜索的单词
char ctmp=board[i][j];
board[i][j]='#'; //标记 不能重复
//上
if(i-1>=0&&board[i-1][j]==word[index+1]){
if(exist_helper(board, word, i-1, j, index+1))
return true;
}
//下
if(i+1<board.size()&&board[i+1][j]==word[index+1]){
if(exist_helper(board, word, i+1, j, index+1))
return true;
}
//左
if(j-1>=0&&board[i][j-1]==word[index+1]){
if(exist_helper(board, word, i, j-1, index+1))
return true;
}
//右
if(j+1<board[0].size()&&board[i][j+1]==word[index+1]){
if(exist_helper(board, word, i, j+1, index+1))
return true;
}
board[i][j]=ctmp;
return false;
}
bool exist(vector<vector<char>>& board, string word) {
if(word.size()==0) return true;
int row=board.size();
int col=board[0].size();
if(row==0||col==0) return false;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(board[i][j]==word[0]&&exist_helper(board,word,i,j,0))
return true;
}
}
return false;
}
};