/*
File Name :uva10010.cpp
Author : erlingyier
Created Time: 2014年08月24日 星期日 12时50分41秒
*/
#include <stdio.h>
#include <string.h>
#include <set>
#include <vector>
#include <map>
using namespace std;
#define N 55
char mymap[N][N];
char temp[N];
int n, m;//表示有m行n列
int dir[8][2] = {
{1,1},{1,0},{0,1},{1,-1},
{-1,-1},{-1,0},{0,-1},{-1,1}};//八个方向
void upper_to_lower(char *str)
{
int k = strlen(str);
for(int i = 0; i < k; i++)
{
if(str[i] >= 'a'&&str[i] <= 'z')
str[i] -= 32;
}
}
int judge(char *str, int a, int b)
{
int flag;
int k = strlen(str);
for(int i = 0; i < 8; i++)
{
flag = 0;
for(int j = 1; j < k; j++)
{
if(b+dir[i][1]*j>=n||b+dir[i][1]<0)
{
flag = 1; break;
}
if(a+dir[i][0]*j>=m||a+dir[i][0]<0)
{
flag = 1; break;
}
if(str[j]!=mymap[a+dir[i][0]*j][b+dir[i][1]*j])
{
flag = 1; break;
}
}
if(flag) continue;
return 1;
}
return 0;
}
void find(char str[])
{
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
if(str[0] == mymap[i][j]&&judge(str, i, j))
{
printf("%d %d\n",i+1, j+1);
return;
}
}
int main( int argc, const char* argv[] )
{
int T;
scanf("%d",&T);
while(T--)
{
memset(mymap, 0, sizeof(mymap));
memset(temp, 0, sizeof(temp));
scanf("%d%d",&m,&n);
for(int i = 0; i < m; i++)
{
scanf("%s",mymap[i]);
upper_to_lower(mymap[i]);
}
int test;
scanf("%d", &test);
while(test--)
{
scanf("%s",temp);
upper_to_lower(temp);
find(temp);
memset(temp, 0, sizeof(temp));
}
if(T)
printf("\n");
}
return 0;
}
UVA10010
最新推荐文章于 2019-07-06 13:14:54 发布