jayati

Word Boggle

Oct 5th, 2023
1,029
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. //{ Driver Code Starts
  2. // Initial template for C++
  3.  
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6.  
  7.  
  8. // } Driver Code Ends
  9. class Solution {
  10. public:
  11.      bool dfs(vector<vector<char> >& board, string &s, int i, int j, int n, int m, int idx){
  12.        
  13.        if(i<0 || i>=n||j<0||j>=m){
  14.            return false;
  15.        }
  16.        
  17.        if(s[idx]!= board[i][j]){
  18.            return false;
  19.        }
  20.        if(idx == s.size()-1){
  21.            return true;
  22.        }
  23.        
  24.        char temp = board[i][j];
  25.        board[i][j]='*';
  26.        
  27.        bool a = dfs(board,s,i,j+1,n,m,idx+1);
  28.        bool b= dfs(board,s,i,j-1,n,m,idx+1);
  29.        bool c = dfs(board,s,i+1,j,n,m,idx+1);
  30.        bool d = dfs(board,s,i-1,j,n,m,idx+1);
  31.        bool e = dfs(board,s,i+1,j+1,n,m,idx+1);
  32.        bool f = dfs(board,s,i-1,j+1,n,m,idx+1);
  33.        bool g = dfs(board,s,i+1,j-1,n,m,idx+1);
  34.        bool h = dfs(board,s,i-1,j-1,n,m,idx+1);
  35.        
  36.        board[i][j]=temp;
  37.        return a||b||c||e||f||g||h||d;
  38.        
  39.        
  40.    }
  41.    vector<string> wordBoggle(vector<vector<char> >& board, vector<string>& dictionary) {
  42.            int n= board.size();
  43.            int m = board[0].size();
  44.            vector<string> ans;
  45.            set<string> store;
  46.             for(int i=0;i<dictionary.size();i++){
  47.                 string s = dictionary[i];
  48.                 int l = s.size();
  49.                 for(int j = 0 ; j < n;j++){
  50.                     for(int k=0;k<m;k++){
  51.                         if(dfs(board,s,j,k,n,m,0)){
  52.                             store.insert(s);
  53.                         }
  54.                     }
  55.                 }
  56.             }
  57.              
  58.             for(auto i:store){
  59.                 ans.push_back(i);
  60.             }
  61.            
  62.             return ans;
  63.      
  64. }
  65.  
  66. };
  67.  
  68. //{ Driver Code Starts.
  69.  
  70. int main() {
  71.     int t;
  72.     cin >> t;
  73.     while (t--) {
  74.         int N;
  75.         cin >> N;
  76.         vector<string> dictionary;
  77.         for (int i = 0; i < N; ++i) {
  78.             string s;
  79.             cin >> s;
  80.             dictionary.push_back(s);
  81.         }
  82.        
  83.         int R, C;
  84.         cin >> R >> C;
  85.         vector<vector<char> > board(R);
  86.         for (int i = 0; i < R; i++) {
  87.             board[i].resize(C);
  88.             for (int j = 0; j < C; j++) cin >> board[i][j];
  89.         }
  90.         Solution obj;
  91.         vector<string> output = obj.wordBoggle(board, dictionary);
  92.         if (output.size() == 0)
  93.             cout << "-1";
  94.         else {
  95.             sort(output.begin(), output.end());
  96.             for (int i = 0; i < output.size(); i++) cout << output[i] << " ";
  97.         }
  98.         cout << endl;
  99.     }
  100. }
  101.  
  102. // } Driver Code Ends
Tags: dfs medium Imp
Advertisement
Add Comment
Please, Sign In to add comment