LeetCode Word Search simple BFS
class Solution {
public:
bool is_valid(int row,int col,int m,int n){
if(row>=0 && row<m && col>=0 && col<n)
return true;
else
return false;
}
bool bfs(vector<vector<char>>& board, string &word,int row,int col,bool visited[1000][1000],int row_arr[],int col_arr[],int m,int n,int idx){
if(word[idx]=='\0')
return true;
int new_row,new_col;
for(int i=0;i<4;i++)
{
new_row=row+row_arr[i];
new_col=col+col_arr[i];
if(is_valid(new_row,new_col,m,n) && !(visited[new_row][new_col]) && board[new_row][new_col]==word[idx])
{
visited[new_row][new_col]=true;
if(bfs(board,word,new_row,new_col,visited,row_arr,col_arr,m,n,idx+1)==true)
return true;
else{
visited[new_row][new_col]=false;
continue;
}
}
}
return false;
}
bool exist(vector<vector<char>>& board, string word) {
int m=board.size();
if(m==0)
return false;
int n=board[0].size();
int row_arr[]={-1,0,1,0};
int col_arr[]={0,1,0,-1};
bool visited[1000][1000];
memset(visited,false,sizeof(visited));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(board[i][j]==word[0]){
visited[i][j]=true;
if(bfs(board,word,i,j,visited,row_arr,col_arr,m,n,1))
return true;
else
memset(visited,false,sizeof(visited));
}
}
}
return false;
}
};
No comments:
Post a Comment