1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #include<iostream> using namespace std; int t,m,n,k,dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; char arr[55][55]; string query; bool out=false; bool cango(int x,int y){ if(x<0 || x>=m || y<0 || y>=n) return false; return true; } bool find_ans(int x, int y, int len){ for(int i=0 ; i<8 ; i++){ bool end=true; for(int step=0 ; step<len ; step++){ int nx=x+dir[i][0]*step; int ny=y+dir[i][1]*step; if(!cango(nx,ny) || arr[nx][ny]!=query[step]){ end=false; break; } } if(end) return true; } return false; } int main(){ cin>>t; while(t--){ if(out){ cout<<"\n"; } else{ out=true; } cin>>m>>n; for(int i=0 ; i<m ; i++){ for(int j=0 ; j<n ; j++){ cin>>arr[i][j]; arr[i][j]=tolower(arr[i][j]); } } cin>>k; while(k--){ cin>>query; for(int i=0 ; i<query.size() ; i++){ query[i]=tolower(query[i]); } bool end=false; int ans_x=-1,ans_y=-1; for(int i=0 ; i<m ; i++){ for(int j=0 ; j<n && !end ; j++){ if(arr[i][j]==query[0] && find_ans(i,j,query.size())){ cout<<i+1<<" "<<j+1<<"\n"; end=true; } } } } } return 0; }
|