您的位置:首页 > 其它

UVa 10010

2012-10-14 20:47 148 查看
字符串处理,按照8个方向之中的某个搜到即可(遍历时把每个点当做起始点向八个方向寻找)

开始没看清题....写成深搜了.....杯具.........

#include<stdio.h>

char matrix[51][51];

bool visited[50][50];

char targets[20][100];

int dire[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{-1,1},{1,-1},{-1,-1}};

/*

int DFS(int x,int y,int m,int n,char * target)

{
int reuslt;
if(*target==0)
return 1;
if((x<0||y<0||x>=m||y>=n)&&visited[x][y]==1)
{
if(*target==0)
return 1;
else
return 0;
}
for(int i=0;i<8;++i)
{
if(matrix[x][y]==*target)
{
visited[x+dire[i][0]][y+dire[i][1]]=1;
if(x+dire[i][0]>=0&&x+dire[i][0]<m&&y+dire[i][1]>=0&&y+dire[i][1]<=n)
reuslt=DFS(x+dire[i][0],y+dire[i][1],m,n,target+1);
visited[x+dire[i][0]][y+dire[i][1]]=1;
return reuslt;
}
}

}

*/

int check(int x,int y,int m,int n)

{

    return (x<m&&x>=0&&y<n&&y>=0);

}

int find(int x,int y,int m,int n,char * target)

{
//°Ë¸ö·½Ïò
int tx=x;
int ty=y;
int okay=1;

    int dx;

    int dy;

    char *p=target;

    for(int i=0;i<8;++i)

    {

        okay=1;

        p=target;

        dx=dire[i][0];

        dy=dire[i][1];
tx=x;
ty=y;

        while(check(tx,ty,m,n)&&*p)

        {

            if(*p!=matrix[tx][ty]||*p==0)

            {

                okay=0;

                break;

            }

            tx+=dx;

            ty+=dy;

            p++;

        }
if(*p!=0)
{
okay=0;
}

        if(okay==1)

        return 1;

    }

    return 0;

}

int main()

{
int mark=1;
int cases;
int m,n;
int k;
scanf("%d",&cases);
for(int i=0;i<cases;i++)
{
if(!mark)
printf("\n");
mark=0;
scanf("%d%d",&m,&n);
for(int j=0;j<m;++j)
{
scanf("%s",matrix[j]);
for(char *p=matrix[j];*p;++p)
{
if(*p>='A'&&*p<='Z')
{
*p+=32;
}
}
}
scanf("%d",&k);
for(int j=0;j<k;++j)
{
scanf("%s",targets[j]);
for(char *p=targets[j];*p;++p)
{
if(*p>='A'&&*p<='Z')
{
*p+=32;
}
}
}
for(int ll=0;ll<k;++ll)
{
for(int l1=0;l1<m;++l1)
{
for(int l2=0;l2<n;++l2)
{
if(find(l1,l2,m,n,targets[ll])==1)
{
printf("%d %d\n",l1+1,l2+1);
goto XXX;
}
}
}
XXX:;

}
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matrix