UVa 10010: Where's Waldorf?
2013-07-28 13:29
399 查看
这道题是简单的字符串搜索问题。
先将输入的m*n的表中字符全部换为小写, k次输入的字符串word[]同样转换为小写。
然后在表中从左到右,从上到下搜索word[0], 找到后从word[0]所在位置向8个方向搜索是否有与word[]相同的字符串即可。
我的代码如下:
先将输入的m*n的表中字符全部换为小写, k次输入的字符串word[]同样转换为小写。
然后在表中从左到右,从上到下搜索word[0], 找到后从word[0]所在位置向8个方向搜索是否有与word[]相同的字符串即可。
我的代码如下:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> using namespace std; char table[50][50]; char word[50]; const int dx[] = { -1, 1, 0, 0, -1, 1, -1, 1 }; const int dy[] = { 0, 0, -1, 1, -1, -1, 1, 1 }; int T; int m,n,k; int f(int x, int y) //从table[x][y]开始向8个方向搜索是否有相同的字符串 { for(int d=0; d<8; d++) { int newx=x, newy=y; int ok=1; for(int i=1; i<strlen(word); i++) { newx = newx + dx[d]; newy = newy + dy[d]; if(newx>=0 && newx<m && newy>=0 && newy<n) { if(table[newx][newy]!=word[i]) { ok=0; break; } } else { ok=0; break; } } if(ok) return 1; } return 0; } int main() { cin >> T; while(T--) { cin >> m >> n; for(int i=0; i<m; i++) for(int j=0; j<n; j++) { cin >> table[i][j]; if(table[i][j]>='A' && table[i][j]<='Z') table[i][j]=table[i][j]-'A'+'a'; } cin >> k; for(int i=0; i<k; i++) { cin >> word; for(int j=0; j<strlen(word); j++) if(word[j]>='A' && word[j]<='Z') word[j]=word[j]-'A'+'a'; int topx, lefty, find=0; for(int a=0; a<m; a++) { if(find) break; for(int b=0; b<n; b++) { if(word[0]==table[a][b]) { if(f(a,b)) { topx=a; lefty=b; find=1; break; } } } } cout << topx+1 << ' ' << lefty+1 << endl; } if(T) cout << endl; } return 0; }
相关文章推荐
- UVA 10010 Where's Waldorf?
- UVA 10010 - Where's Waldorf?
- UVA 10010 Where's Waldorf?
- UVa 10010 - Where's Waldorf?
- UVA10010 - Where's Waldorf?
- UVa10010 Where's Waldorf?
- UVA 10010 - Where's Waldorf?
- UVA 10010 - Where's Waldorf? 水题一道
- UVa Problem 10010 Where’s Waldorf?(寻找单词)
- UVA 10010 Where's Waldorf? (DFS)
- Uva - 10010 - Where's Waldorf?(暴力枚举)
- UVa-10010-Where's Waldorf?
- uva-10010 - Where's Waldorf?
- UVA - 10010 Where's Waldorf?
- UVA - 10010 Where's Waldorf?
- uva 10010 Where's Waldorf?(DFS字符串查找)
- UVa - 10010 - Where's Waldorf?
- UVA - 10010 Where's Waldorf?
- UVA - 10010 - Where's Waldorf
- UVa 10010 - Where's Waldorf? 解题报告