uva 10010 Where's Waldorf?
这道题目真是让我错的真是欲哭无泪啊,在这里我还是要感慨一下我的英语水平,那些意思我实在看不很明确,导致我在小细节上连续出错,我受不了了
这道题目也就涉及了一点点算法的知识,更多的是字符串处理的掌握。不过如果你对与字符串的库函数掌握的更广一些的话,你就可以省去一些麻烦了,给大家介绍个网站,字符串处理的库函数
http://zhwen.org/tools/clib/string/bcmp.html 就在这个网站上
下面贴上我的代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//代码就在下面了,相信不用我过多的介绍,聪明的你一定会看懂,而且会优化代码 #include<stdio.h> #include<string.h> #include<ctype.h> const int x[] = {0,-1,-1,-1,0,1,1,1},y[] = {-1,-1,0,1,1,1,0,-1}; int main() { int T; scanf("%d",&T); while(T--) { int i, j, l, r, m, n, len, cases, t, k; char st[60][60], s[60]; scanf("%d%d",&m,&n); getchar(); for(i = 0;i < m; i++) { gets(st[i]); len = strlen(st[i]); for(j = 0;j < len; j++) // 字符串处理函数,将小写字母转化为大写字母,此函数包含在'ctype.h'中 st[i][j] = toupper(st[i][j]); } scanf("%d",&cases); getchar(); while(cases--) { gets(s); len = strlen(s); for(i = 0;i < len; i++) s[i] = toupper(s[i]); t = 0; for(i = 0;i < m; i++) { for(j = 0;j < n; j++) { if(st[i][j] == s[0]) { for(k = 0;k < 8; k++) { for(l = i,r = j, t = 0;l >= 0 && r >= 0 && l < m && r < n;l += x[k],r += y[k],t++) { if(st[l][r] != s[t]) break; if(t == len-1) { printf("%d %d\n",i+1,j+1); } } if(t == len) break; } } if(t == len) break; } if(t == len) break; } } if(T) printf("\n"); } return 0; }