题意:找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); } }