10010

来源:互联网 发布:电火花成型加工编程 编辑:程序博客网 时间:2024/06/06 17:27
#include<stdio.h>const int maxm=51,maxn=51,maxdir=8;char grid[maxm][maxn];char word[maxm];int next(int q,int p, int m, int n,int w_ptr, int dir){    if('\0'==word[w_ptr])return 1;    if((q<0)|| (p<0) || (q==m) || (p==n))return 0;    if((word[w_ptr]==grid[q][p]+32)||(word[w_ptr]==grid[q][p]-32)||(word[w_ptr]==grid[q][p]))//ignore upper||lower    {//        123//        804//        765        switch(dir)        {        case 1:            if(next(q-1  ,p-1  ,m,n,w_ptr+1,1))return 1;break;        case 2:            if(next(q-1  ,p    ,m,n,w_ptr+1,2))return 1;break;        case 3:            if(next(q-1  ,p+1  ,m,n,w_ptr+1,3))return 1;break;        case 4:            if(next(q    ,p+1  ,m,n,w_ptr+1,4))return 1;break;        case 5:            if(next(q+1  ,p+1  ,m,n,w_ptr+1,5))return 1;break;        case 6:            if(next(q+1  ,p    ,m,n,w_ptr+1,6))return 1;break;        case 7:            if(next(q+1  ,p-1  ,m,n,w_ptr+1,7))return 1;break;        case 8:            if(next(q    ,p-1  ,m,n,w_ptr+1,8))return 1;break;        }    }    return 0;}int is_here(int q,int p,int m,int n){    //dir*8    for(int i=1;i<=maxdir;i++)        if(next(q,p,m,n,0,i))return 1;    return 0;}int main(){//    freopen("input2.txt","r",stdin);//    freopen("output2.txt","w",stdout);QAQ o gan jide zhushi chongdingxiang WA*6    int m,n,x,k;    scanf("%d",&x);    for(int i=0;i<x&&(2==scanf("%d %d",&m,&n));i++)    {        for(int j=0;j<m;j++)            scanf("%s",grid[j]);        scanf("%d",&k);        for(int j=0;j<k;j++)        {            scanf("%s",word);            //data received            int ok=0;            for(int q=0;q<m&&ok==0;q++)                for(int p=0;p<n&&ok==0;p++)                    if(is_here(q,p,m,n)){printf("%d %d\n",q+1,p+1);ok=1;}        }        if(i<x-1)printf("\n");    }    return 0;}


原创粉丝点击