简单搜索题。

1 #include <stdio.h> 2 #define N 100 3 int dx[4]={0,0,1,-1}; 4 int dy[4]={1,-1,0,0}; 5 char g[N][N],n,m,cnt; 6 void dfs(int i,int j) 7 { 8 int ni,nj,d; 9 for(d=0;d<4;d++) 10 { 11 ni=i+dx[d]; 12 nj=j+dy[d]; 13 if(ni<0 || nj<0 || ni>=n || nj>=m || g[ni][nj]!='#') continue; 14 g[ni][nj]='.'; 15 dfs(ni,nj); 16 } 17 } 18 int main() 19 { 20 int i,j,t; 21 scanf("%d",&t); 22 while(t--) 23 { 24 scanf("%d%d",&n,&m); 25 for(i=0;i<n;i++) 26 { 27 getchar(); 28 for(j=0;j<m;j++) 29 { 30 scanf("%c",&g[i][j]); 31 } 32 } 33 cnt=0; 34 for(i=0;i<n;i++) 35 { 36 for(j=0;j<m;j++) 37 { 38 if(g[i][j]=='#') g[i][j]='.',cnt++,dfs(i,j); 39 } 40 } 41 printf("%d\n",cnt); 42 } 43 return 0; 44 }