Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <map>
- using namespace std;
- int pal=0;
- vector <string> Tab(100);
- int PA[10000],movX[5]={0,1,0,-1,0},movY[5]={0,0,1,0,-1};
- char OR[5]={'Z','O','S','E','N'};
- struct Trie
- {
- map<char, Trie> m;
- bool finPalabra = 0;
- int np=-1;
- };
- string s; ///aab
- int tamPalabra;
- void insertar(Trie &t, int p)
- {
- if(p < tamPalabra) ///Si p es pos valida
- {
- if(p == tamPalabra-1)
- {t.finPalabra = true;
- t.np=pal;}
- insertar(t.m[s[p]], p+1);
- }
- }
- int D,P;
- void recorrer(Trie t,int Ori, int i, int j)
- {
- if(t.finPalabra)
- PA[t.np]=Ori;
- if(i>-1&&i<D&&j<D&&j>-1)
- {for(auto k:t.m)
- if(k.first==Tab[i][j]){recorrer(k.second,Ori,i+movY[Ori],j+movX[Ori]);
- }}
- }
- int main()
- {
- ifstream FE ("raprigrama.in");
- FE>>D>>P;
- for(int i=0;i<D;i++)
- {FE>>Tab[i];}
- Trie t;
- for(int i=0; i<P; i++)
- {
- FE >> s;
- s += " ";
- tamPalabra = s.size();
- insertar(t, 0);
- pal++;
- }
- FE.close();
- for(int i=0;i<D;i++)
- {for(int j=0;j<D;j++)
- {
- recorrer(t,4,i,j);
- recorrer(t,1,i,j);
- recorrer(t,2,i,j);
- recorrer(t,3,i,j);
- }
- }
- ofstream FS("raprigrama.out");
- for(int i=0;i<P;i++)
- {if(PA[i])FS<<i+1<<" "<<OR[PA[i]]<<endl;
- }
- FS.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement