您的位置:首页 > 其它

UVA 10010-- Where's Waldorf?

2016-07-18 10:55 447 查看
  原题网址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=951

直接暴力搜索,有点麻烦但是不是很难。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define N 10000
char str1

,str2
;
int len,n,m;
bool find(int i,int j)
{
int p=0;
int v=i;
int q=j;

q=j+1;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
q++;
else break;
}
if(p==len) return 1;
q=j-1;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
q--;
else break;
}
if(p==len) return 1;
v=i+1,q=j;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
v++;
else break;
}
if(p==len) return 1;
v=i-1,q=j;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
v--;
else break;
}
if(p==len) return 1;
v=i-1,q=j-1;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
v--,q--;
else break;
}
if(p==len) return 1;
v=i+1,q=j+1;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
v++,q++;
else break;
}
if(p==len) return 1;
v=i-1,q=j+1;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
v--,q++;
else break;
}
if(p==len) return 1;
v=i+1,q=j-1;
for(p=1;p<len;p++)
{
if(str1[v][q]==str2[p])
v++,q--;
else break;
}
if(p==len) return 1;
return 0;
}
int main()
{
int i,j,t,k;
cin>>t;
while(t--)
{
memset(str1,0,sizeof(str1));
cin>>n>>m;
for(i=0;i<n;i++)
cin>>str1[i];

for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(str1[i][j]<91)
str1[i][j]+=32;

cin>>k;
while(k--)
{
cin>>str2;
len=strlen(str2);

for(i=0;i<len;i++)
if(str2[i]<91) str2[i]+=32;
int flag=0;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
if(str1[i][j]==str2[0]&&find(i,j)==1)
{
flag=1;
cout<<i+1<<" "<<j+1<<endl;
break;
}
if(flag==1) break;
}
}
if(t) cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva