蒜头君和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用'G'
代表草丛,'.'
代表空地,下面的峡谷中有2 片草片。
GG..
..GG
输入格式
第一行输入 n,m(1≤n,m≤100) 表示峡谷大小
接下来输入 n 行字符串表示峡谷的地形
输入格式
输出至少需要多少人
样例输入
5 6 .#.... ..#... ..#..# ...##. .#....
样例输出
5
解题说明:
代码:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int room[105][105];
int mark[105][105];
int ans=0;
int chgx[5]={0,1,-1,0,0};
int chgy[5]={0,0,0,1,-1};
void dfs(int x,int y){
mark[x][y]=1;
for(int i=1;i<=4;i++){
int xx=x+chgx[i];
int yy=y+chgy[i];
if(room[xx][yy]==1&&mark[xx][yy]==0)dfs(xx,yy);
}
return;
}
int main(){
int n,m;cin>>n>>m;
char ip1;int op2;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>ip1;
if(ip1=='.')op2=0;
else op2=1;
room[i][j]=op2;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(room[i][j]==1&&mark[i][j]==0){
dfs(i,j);
ans++;
}
}
cout<<ans<<endl;
return 0;
}