Facebook
From Rashmi, 4 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 130
  1. class Solution {
  2. public:
  3.     bool func(vector<vector<char>>& board,vector<vector<bool>> &vis,int i,int j,int k,string &word)
  4.     {
  5.         int m=board[0].size();
  6.         int n=board.size();
  7.        
  8.         if(k==word.length())
  9.             return true;
  10.        
  11.         if(i<0||i>=n)
  12.             return false;
  13.        
  14.             if(j<0||j>=m)
  15.             return false;
  16.        
  17.         if(board[i][j]!=word[k]||vis[i][j]==true)
  18.             return false;
  19.        
  20.        
  21.             vis[i][j]=true;
  22.        
  23.  bool t= func(board,vis,i,j+1,k+1,word)||func(board,vis,i,j-1,k+1,word)||
  24.             func(board,vis,i+1,j,k+1,word)||func(board,vis,i-1,j,k+1,word);
  25.            
  26.             vis[i][j]=false;
  27.        
  28.             return t;
  29.        
  30.        
  31.     }
  32.    
  33.    
  34.    
  35.     bool exist(vector<vector<char>>& board, string word)  {
  36.      
  37.         int n=board.size();
  38.         int m=board[0].size();
  39.        
  40.        
  41.         vector<vector<bool>> vis(n,vector<bool>(m,false));//
  42.        
  43.         bool t;
  44.         for(int i = 0; i < n; i++)
  45.         {
  46.             for(int j = 0; j < m; j++){
  47.                 if(board[i][j] == word[0]){
  48.                     t = func(board,vis,i,j,0,word);
  49.                    
  50.                     if(t)
  51.                         return true;
  52.                 }
  53.             }
  54.         }
  55.        
  56.           return  false;  
  57.    
  58.        
  59.     }
  60. };