题意:找相同字符窜首字母的地址
读题。。。。A word matches a straight, uninterrupted line of letters in the grid.The outputs of two consecutive cases will be separated by a blank line.这两句haunted都没读出来。。。。一个说字符窜必须直线,一个说输出在两组数据内,第一个没读导致我用搜索TLE,第二个WA
#include<stdio.h>
#include<string.h>
char str[100][100],rem[100];
int t1[]={-1,-1,-1,0,0,1,1,1};
int t2[]={-1,0,1,-1,1,-1,0,1};
int len,m,n;
void Rever(int row,int col,int ans)
{
if(str[row][col]>='A' && str[row][col]<='Z') str[row][col]+=32;
if(rem[ans]>='A' && rem[ans]<='Z') rem[ans]+=32;
}
int Action(int row,int col)
{
int ans=0,i;
int x=row,y=col;
Rever(row,col,ans);
if(str[row][col]!=rem[ans]) return 0;
for (i=0;i<8;i++)
{
ans=0;
while(1)
{
Rever(row,col,ans);
if(row<0 || col<0 || row>=m || col>=n || str[row][col]!=rem[ans]) break;
{
if(ans==len-1) return 1;
ans++;
row+=t1[i];col+=t2[i];
}
}
row=x;col=y;
}
return 0;
}
int main()
{
int i,j;
int T,x,k;
int flag;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
for (i=0;i<m;i++)
{
scanf("%s",str[i]);
}
scanf("%d",&x);
for (k=0;k<x;k++)
{
scanf("%s",rem);
len=strlen(rem);
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
flag=0;
flag=Action(i,j);
if(flag) break;
}
if(flag) break;
}
printf("%d %d\n",i+1,j+1);
}
if(T!=0) printf("\n");
}
return 0;
}