class Solution {
public:
bool visit(vector<vector<char>>& board, string & word,int i,int j,int n,bool **p)
{
if(p[i][j]) return 0;
if(word[n]!=board[i][j]) return 0;
if(n==word.size()-1) return 1;
p[i][j]=1;
if(i)
{
if(visit(board,word,i-1,j,n+1,p)) return 1;
}
if(j)
{
if(visit(board,word,i,j-1,n+1,p)) return 1;
}
if(j<(board[0].size()-1))
{
if(visit(board,word,i,j+1,n+1,p)) return 1;
}
if(i<(board.size()-1))
{
if(visit(board,word,i+1,j,n+1,p)) return 1;
}
p[i][j]=0;
return 0;
}
bool exist(vector<vector<char>>& board, string word) {
int m=board.size();
if(!m) return 0;
int n=board[0].size();
bool *p[m];
for(int i=0;i<m;++i)
{
p[i]=new bool[n];
fill(p[i],p[i]+n,0);
}
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
{
if(visit(board,word,i,j,0,p))
return 1;
}
}
return 0;
}
};
leetcode - 79. Word Search
最新推荐文章于 2023-06-03 09:46:57 发布