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;
}
直接暴力搜索,有点麻烦但是不是很难。
#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;
}
相关文章推荐
- 1.10055 - Hashmat the brave warrior
- 2.10071 - Back to High School Physics
- 3.458 - The Decoder
- 4.694 - The Collatz Sequence
- 6.494 - Kindergarten Counting Game
- 7.490 - Rotating Sentences
- 8.414 - Machined Surfaces
- 9.488 - Triangle Wave
- A.457 - Linear Cellular Automata
- B.489 - Hangman Judge
- C.445 - Marvelous Mazes
- 1.10494 - If We Were a Child Again
- 2.424 - Integer Inquiry
- 3.10250 - The Other Two Trees
- 5.465 - Overflow
- 6.113 - Power of Cryptography
- 7.10161 - Ant on a Chessboard
- 8.621 - Secret Research
- 9.401 - Palindromes
- A.537 - Artificial Intelligence?