题目:
思考:
1.经典回溯
实现:
cpp
class Solution {
public:
bool find_word(vector<vector<char>>&board,string word,int pos,int i,int j)
{
bool ret=false;
if (pos==word.size()-1) return board[i][j]==word[pos];
if (board[i][j]==word[pos])
{
char t=board[i][j];
board[i][j]='*';
if (i-1>=0)
{
ret=ret||find_word(board,word,pos+1,i-1,j);
}
if (j-1>=0)
{
ret=ret||find_word(board,word,pos+1,i,j-1);
}
if (i+1<board.size())
{
ret=ret||find_word(board,word,pos+1,i+1,j);
}
if (j+1<board[0].size())
{
ret=ret||find_word(board,word,pos+1,i,j+1);
}
board[i][j]=t;
return ret;
}
else
{
return false;
}
}
bool exist(vector<vector<char>>& board, string word) {
for (int i=0;i<board.size();i++)
{
for (int j=0;j<board[0].size();j++)
{
if (board[i][j]==word[0])
{
if (find_word(board,word,0,i,j))
{
return true;
}
}
}
}
return false;
}
};