简单搜索
#include<stdio.h> char map[110][110]; int n,m; int dir[4][2]={0,1,1,0,0,-1,-1,0}; int judge(int x,int y) { if(x>=0&&x<n&&y>=0&&y<m&&map[x][y]=='#') return 1; return 0; } void dfs(int x,int y) { int i,a,b; map[x][y]='.'; for(i=0;i<4;i++) { a=x+dir[i][0]; b=y+dir[i][1]; if(judge(a,b)) { dfs(a,b); } } } int main() { int t,i,j,sum,k; scanf("%d",&t); while(t--) { sum=0; scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%s",map[i]); for(i=0;i<n;i++) for(j=0;j<m;j++) { if(map[i][j]=='#') {dfs(i,j);sum++;} } printf("%d\n",sum); } return 0; }