题意:找n行m列的字符里的girl和cat的个数
思路:深搜
感想,简单,感觉以前做过,数据量小,暴力就可以
代码:
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f;
int T,n,m,a,b,num,f[5]={1,-1,0,0},g[5]={0,0,1,-1},l,r;
char dd[5];
char ch[1005][1005];
int dfs(int x,int y,int now,int ll)
{
if(ll==now) {++num;return 0;}
for(int i=0;i<4;i++)
{
l=x+f[i];
r=y+g[i];
if(l<0||l>=n||r<0||r>=m) continue;
if(ch[l][r]==dd[now]) dfs(l,r,now+1,ll);
}
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%s",ch[i]);
dd[0]='g';
dd[1]='i';
dd[2]='r';
dd[3]='l';
num=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(ch[i][j]=='g')
dfs(i,j,1,4);
}
}
dd[0]='c';
dd[1]='a';
dd[2]='t';
a=num;
num=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(ch[i][j]=='c')
dfs(i,j,1,3);
}
}
printf("%d %d\n",a,num);
}
}