原题链接:Leecode 79. 单词搜索
又臭又长的代码
class Solution {
public:
bool res=false;
vector<vector<int> > v;
void dfs(vector<vector<char>>& board, string word,string s,int i,int j,int n)
{
int m=board.size(),n1=board[0].size();
if(word.size()==s.size())
{
res=true;
return ;
}
v[i][j]=1;
if(i-1>=0 && !v[i-1][j] && board[i-1][j]==word[n+1] ) dfs(board,word,s+board[i-1][j],i-1,j,n+1);
if(i+1<m && !v[i+1][j] && board[i+1][j]==word[n+1] ) dfs(board,word,s+board[i+1][j],i+1,j,n+1);
if(j-1>=0 && !v[i][j-1] && board[i][j-1]==word[n+1] ) dfs(board,word,s+board[i][j-1],i,j-1,n+1);
if(j+1<n1 && !v[i][j+1] && board[i][j+1]==word[n+1] ) dfs(board,word,s+board[i][j+1],i,j+1,n+1);
v[i][j]=0;
}
bool exist(vector<vector<char>>& board, string word) {
int m=board.size(),n=board[0].size();
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(board[i][j]==word[0])
{
v=vector<vector<int> >(m,vector<int>(n,0));
string s; s+=board[i][j];
dfs(board,word,s,i,j,0);
if(res) return true;
}
}
}
return false;
}
};