spider68

word break

Jun 30th, 2020
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5.     int i,j,t,m,n;
  6.     cin>>t;
  7.     while(t--)
  8.     {
  9.         cin>>n;
  10.         set<string>s;
  11.         string str;
  12.         for(i=0;i<n;i++){cin>>str; s.insert(str);}
  13.         cin>>str;
  14.         n=str.length();
  15.         vector<bool> dp(s.size()+1,false);
  16.         dp[0]=true;
  17.        
  18.         for(int i=1;i<=n;i++)
  19.         {
  20.             for(int j=0;j<i;j++)
  21.             {
  22.                 if(dp[j])
  23.                 {
  24.                     string word = str.substr(j,i-j);
  25.                     if(s.find(word)!= s.end())
  26.                     {
  27.                         dp[i]=true;
  28.                         break;
  29.                     }
  30.                 }
  31.             }
  32.         }
  33.         cout<<dp[n]<<endl;
  34.     }
  35.     return 0;
  36. }
  37.  
  38.  
  39. -------------------word break 2----
  40. #include <bits/stdc++.h>
  41. using namespace std;
  42. set<string>ss;
  43. unordered_map<string,int> mp;
  44. void test(string s,int i,int n,string cur,string ans)
  45. {
  46.     cur+=s[i];
  47.     if(i==n){
  48.         if(mp.find(cur)!=mp.end()){
  49.             ans+=cur;
  50.             ss.insert(ans);
  51.         }    
  52.         return;
  53.     }    
  54.     if(mp.find(cur)!=mp.end())test(s,i+1,n,"",ans+cur+" ");
  55.     test(s,i+1,n,cur,ans);
  56.     return ;
  57. }
  58. int main() {
  59.     int i,j,t,m,n;
  60.     cin>>t;
  61.     while(t--)
  62.     {
  63.         ss.clear();
  64.         mp.clear();
  65.         cin>>n;
  66.         string str;
  67.         for(i=0;i<n;i++){cin>>str; mp[str]++;}
  68.         cin>>str;
  69.         test(str,0,str.length()-1,"","");
  70.         for(auto s:ss){
  71.             cout<<"("<<s<<")";
  72.         }
  73.         cout<<endl;
  74.     }
  75.     return 0;
  76. }
Add Comment
Please, Sign In to add comment