10010- Where's Waldorf?

 #include<stdio.h> #include<string.h> #include<ctype.h> #define LOCAL char grid[55][55]; int d[8][2]={{0,-1},{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1}}; int *search(char *s,int m,int n) { int i,j; int a,b,count,c,t;///a,b用作循环变量,count用来指示是否对word匹配完毕 ////c用来作为s的循环变量 int k[2]; int len=strlen(s); for(i=0;i<m;i++) for(j=0;j<n;j++) if(s[0]==grid[i][j]) { for(t=0;t<8;t++) { a=i+d[t][0];b=j+d[t][1];count=1;c=1; while(c<len&&a<m&&a>=0&&b<n&&b>=0) { if(s[c]!=grid[a][b]) break; else count++; c++;a+=d[t][0];b+=d[t][1]; } if(count==len) { k[0]=i; k[1]=j; return k; } } } } int main() { #ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int cas; scanf("%d",&cas); while(cas--) { int m,n;//m为matrix的行数,n为matrix的列数 scanf("%d%d",&m,&n); int i,j;//i,j均作为循环变量 for(i=0;i<m;i++) { scanf("%s",grid[i]); for(j=0;j<n;j++) if(islower(grid[i][j])) grid[i][j]=toupper(grid[i][j]); } ////nwords为总共word的数目,s数组为保存每个word,t存储查找到的字符在矩阵中位置 int nwords; char s[55]; int t[2]; scanf("%d",&nwords); while(nwords--) { scanf("%s",s); int len=strlen(s); for(i=0;i<len;i++) if(islower(s[i])) s[i]=toupper(s[i]); int *t=search(s,m,n); printf("%d %d/n",t[0]+1,t[1]+1); } if(cas>0) printf("/n"); } return 0; }

你可能感兴趣的:(10010- Where's Waldorf?)