Advertisement
CodigoL

Raprigrama C++

Sep 30th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <map>
  5. using namespace std;
  6. int pal=0;
  7. vector <string> Tab(100);
  8. int PA[10000],movX[5]={0,1,0,-1,0},movY[5]={0,0,1,0,-1};
  9. char OR[5]={'Z','O','S','E','N'};
  10.  
  11. struct Trie
  12. {
  13.     map<char, Trie> m;
  14.     bool finPalabra = 0;
  15.     int np=-1;
  16. };
  17.  
  18. string s; ///aab
  19. int tamPalabra;
  20.  
  21. void insertar(Trie &t, int p)
  22. {
  23.     if(p < tamPalabra) ///Si p es pos valida
  24.     {
  25.         if(p == tamPalabra-1)
  26.            {t.finPalabra = true;
  27.             t.np=pal;}
  28.         insertar(t.m[s[p]], p+1);
  29.     }
  30. }
  31. int D,P;
  32. void recorrer(Trie t,int Ori, int i, int j)
  33. {
  34.     if(t.finPalabra)
  35.         PA[t.np]=Ori;
  36.     if(i>-1&&i<D&&j<D&&j>-1)
  37.     {for(auto k:t.m)
  38.      if(k.first==Tab[i][j]){recorrer(k.second,Ori,i+movY[Ori],j+movX[Ori]);
  39.     }}
  40. }
  41.  
  42. int main()
  43. {
  44.     ifstream FE ("raprigrama.in");
  45.     FE>>D>>P;
  46.     for(int i=0;i<D;i++)
  47.     {FE>>Tab[i];}
  48.     Trie t;
  49.     for(int i=0; i<P; i++)
  50.     {
  51.         FE >> s;
  52.         s += " ";
  53.         tamPalabra = s.size();
  54.         insertar(t, 0);
  55.         pal++;
  56.     }
  57.     FE.close();
  58. for(int i=0;i<D;i++)
  59. {for(int j=0;j<D;j++)
  60.     {
  61.      recorrer(t,4,i,j);
  62.    recorrer(t,1,i,j);
  63.     recorrer(t,2,i,j);
  64.      recorrer(t,3,i,j);
  65.     }
  66. }
  67. ofstream FS("raprigrama.out");
  68. for(int i=0;i<P;i++)
  69. {if(PA[i])FS<<i+1<<" "<<OR[PA[i]]<<endl;
  70.  
  71. }
  72. FS.close();
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement