题意:找相同字符窜首字母的地址
读题。。。。 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
;
}

