题意:问所给的矩阵中有几个girl单词有几个cat单词
思路:搜索,注意在写dfs(int a,int b,int c)想表示c++,一定不能dfs(a,b,c++),不能放++
#include<bits/stdc++.h>
using namespace std;
int dx[5]={1,-1,0,0};
int dy[5]={0,0,1,-1};
int ans1,n,m,ans2;
char ch[1010][1010];
void dfs1(int x,int y,int num)
{
for(int i=0;i<4;i++)
{
int xx=x+dy[i];
int yy=y+dx[i];
if(xx>=0&&xx<n&&yy>=0&&yy<m)
{
if(num==1)
{
if(ch[xx][yy]=='i')
dfs1(xx,yy,num+1);
}
if(num==2)
{
if(ch[xx][yy]=='r')
dfs1(xx,yy,num+1);
}
if(num==3)
{
if(ch[xx][yy]=='l')
ans1++;
}
}
}
return ;
}
void dfs2(int x,int y,int num)
{
for(int i=0;i<4;i++)
{
int xx=x+dy[i];
int yy=y+dx[i];
if(xx>=0&&xx<n&&yy>=0&&yy<m)
{
if(num==1)
{
if(ch[xx][yy]=='a')
dfs2(xx,yy,num+1);
}
if(num==2)
{
if(ch[xx][yy]=='t')
ans2++;
}
}
}
return ;
}
int main()
{
int i,j,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%s",ch[i]);
//for(i=0;i<n;i++)
//printf("%s\n",ch[i]);
ans1=0;
ans2=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(ch[i][j]=='g')
dfs1(i,j,1);
else if(ch[i][j]=='c')
dfs2(i,j,1);
}
}
printf("%d %d\n",ans1,ans2);
}
}