uva 422Word-Search Wonder

来源:互联网 发布:网络诈骗种类 编辑:程序博客网 时间:2024/05/21 10:28
#include<iostream>#include<cstring>#include<cstdio>using namespace std;char word[102][102];char s[102];int stx,sty,enx,eny,N,len;int dire[8][2]= {0,1,0,-1,-1,0,1,0,-1,-1,-1,1,1,-1,1,1};bool DFS(int i,int j,int dir,int pos){    if(pos==len-1)    {        if(word[i][j]==s[pos])        {            enx=i+1;            eny=j+1;            return true;        }        else            return false;    }    if(word[i][j]!=s[pos])return false;    else if(i+dire[dir][0]<0||i+dire[dir][0]>=N||j+dire[dir][1]<0||j+dire[dir][1]>=N)        return false;    else        return DFS(i+dire[dir][0],j+dire[dir][1],dir,pos+1);}int main(){    int i,j,k;    while(scanf("%d",&N)!=EOF)    {        getchar();        for(i=0; i<N; i++)            gets(word[i]);        while(scanf("%s",&s)!=EOF&&strcmp(s,"0")!=0)        {            len=strlen(s);            int flag=0;            for(i=0; i<N&&!flag; i++)                for(j=0; j<N&&!flag; j++)                    for(k=0; k<8&&!flag; k++)                    {                        if(DFS(i,j,k,0))                        {                            stx=i+1;                            sty=j+1;                            flag=1;                            break;                        }                    }            if(!flag)printf("Not found\n");            else printf("%d,%d %d,%d\n",stx,sty,enx,eny);        }    }    return 0;}