#include #include #include using namespace std; const int MAXC=1005; const int MAXL=1005; const int MAXW=1005; #define nullptr NULL //#define ISDEBUG #ifdef ISDEBUG #define dprintf(format,args...) printf(format,##args) #define dsystem(cmd) system(cmd) #else #define dprintf(format,args...) #define dsystem(cmd) #endif // ISDEBUG char map[MAXL][MAXC]; char word[MAXW]; int ans[MAXW][3]; int L,C,W; int direction[8][2]; inline void initdirection() { /// ..[..][0] +-Y ..[..][1] +-X direction[0][0]=-1; direction[0][1]=0; direction[1][0]=-1; direction[1][1]=+1; direction[2][0]=0; direction[2][1]=+1; direction[3][0]=+1; direction[3][1]=+1; direction[4][0]=+1; direction[4][1]=0; direction[5][0]=+1; direction[5][1]=-1; direction[6][0]=0; direction[6][1]=-1; direction[7][0]=-1; direction[7][1]=-1; } struct node { node* next[26]; int wid; }; node _root; node* root=&_root; void display_tree(int step,node* ptr) { for(int i=0;i<26;i++) { if(ptr->next[i]!=nullptr) { for(int i=0;inext[i]); } } } void printtree() { for(int i=0;i<26;i++) { if(root->next[i]!=nullptr) { printf("%c\n",i+'A'); display_tree(1,root->next[i]); } } } void dfs(node* ptr,int starty,int startx,int y,int x,int dir) { dprintf("In DFS: %d %d Dir=%d\n",y,x,dir); if(ptr==nullptr) { dprintf("Null Pointer.\n"); return; } if(ptr->wid!=0) { dprintf("Set ID ptr->wid=%d Set to %d,%d,%d(dir)\n",ptr->wid,startx,starty,dir); dsystem("PAUSE"); ans[ptr->wid][0]=starty; ans[ptr->wid][1]=startx; ans[ptr->wid][2]=dir+'A'; /// Reset word ID to 0. ptr->wid=0; } if(y<0||y>=L||x<0||x>=C) return; /// Same Direction (dir) dfs(ptr->next[map[y][x]-'A'],starty,startx,y+direction[dir][0],x+direction[dir][1],dir); } void buildtree(char* str,node* curnode,int id) { int len=strlen(str); node* nptr=curnode; for(int i=0;inext[index]==nullptr) { node* newnode=(node*)malloc(sizeof(node)); for(int s=0;s<26;s++) newnode->next[s]=nullptr; newnode->wid=0; nptr->next[index]=newnode; nptr=newnode; } else { nptr=nptr->next[index]; } } nptr->wid=id; } int main() { initdirection(); scanf("%d %d %d",&L,&C,&W); for(int i=0;i