思路
代码
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=150;
char f[N][N];
bool st[N][N];
int n,m;
int dx[4]={1,-1,0,0};int dy[4]={0,0,1,-1};
void dfs(int x,int y){
st[x][y]=true;
for(int i=0;i<4;i++){
int a=x+dx[i];
int b=y+dy[i];
if(a<1||a>n||b<1||b>m)continue;
if(f[a][b]!='#'||st[a][b])continue;
dfs(a,b);
}
}
int main(){
int T;
cin >> T;
while(T--){
memset(st,false,sizeof st);
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >> f[i][j];
}
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(f[i][j]=='#'&&!st[i][j]){
dfs(i,j);
ans++;
}
}
}
cout << ans << "\n";
}
}