10010 - Where's Waldorf?

来源:互联网 发布:平面设计书籍 知乎 编辑:程序博客网 时间:2024/04/26 09:18
#include <iostream>#include <cstring>using namespace std;int main(){    int num,cl,r,i,j,count,flag;    int ii,jj,_i,_j;    int n,m;    char str[55][55],w[55];    char c;    cin>>num;    while(num--)    {        cin>>cl>>r;        memset(str,0,sizeof(str));        memset(w,0,sizeof(w));        for(i=0; i<cl; i++)        {            for(j=0; j<r; j++)            {                cin>>c;                if('A'<=c&&c<='Z')                    str[i][j]=c+32;                else if('a'<=c&&c<='z')                    str[i][j]=c;            }        }        cin>>count;        while(count--)        {            ii=jj=0;            flag=-1;            cin>>w;            m=strlen(w);            for(i=0; i<m; i++)                if(w[i]>='A'&&w[i]<='Z')                    w[i]=w[i]+32;            while(1)            {                n=-1;                for(i=ii; i<cl; i++)                {                    if(i-ii!=0)                        j=0;                    else j=jj;                    for(; j<r; j++)                        if(w[0]==str[i][j])                        {                            n=0;                            break;                        }                    if(n==0) break;                }                if(jj<r-1)                {                    jj=j+1;                    ii=i;                }                else                {                    jj=0;                    ii=i+1;                }                _i=i;                _j=j;                if(flag==-1)                {                    for(int _l=1; _l<m; _l++)                    {                        _i--;                        _j--;                        if(_i<0||_j<0) break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1) flag=0;                        }                    }                }                _i=i;                _j=j;                if(flag==-1)                    for(int _l=1; _l<m; _l++)                    {                        _i--;                        if(_i<0) break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1)flag=0;                        }                    }                _i=i;                _j=j;                if(flag==-1)                    for(int _l=1; _l<m; _l++)                    {                        _i--;                        _j++;                        if(_i<0||_j>=r) break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1)flag=0;                        }                    }                _i=i;                _j=j;                if(flag==-1)                    for(int _l=1; _l<m; _l++)                    {                        _j--;                        if(_j<0) break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1)flag=0;                        }                    }                _i=i;                _j=j;                if(flag==-1)                    for(int _l=1; _l<m; _l++)                    {                        _j++;                        if(_j>=r)                            break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1)                                flag=0;                        }                    }                _i=i;                _j=j;                if(flag==-1)                    for(int _l=1; _l<m; _l++)                    {                        _i++;                        _j--;                        if(_i>=cl||_j<0)                            break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1)                                flag=0;                        }                    }                _i=i;                _j=j;                if(flag==-1)                    for(int _l=1; _l<m; _l++)                    {                        _i++;                        if(_i>=cl) break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1)                                flag=0;                        }                    }                _i=i;                _j=j;                if(flag==-1)                    for(int _l=1; _l<m; _l++)                    {                        _i++;                        _j++;                        if(_i>=cl||_j>=r) break;                        if(str[_i][_j]!=w[_l])                        {                            flag=-1;                            break;                        }                        else                        {                            if(_l==m-1)                                flag=0;                        }                    }                if(flag==0)                {                    cout<<i+1<<" "<<j+1<<endl;                    memset(w,0,sizeof(w));                    break;                }            }        }        if(num>0)            cout<<endl;    }    return 0;}

原创粉丝点击