遇到过很多这种题了,统计一个位置的联通区域,需要注意在寻找后要把这个位置的char改变为不能移动的那种
为什么感觉这个题整理过...如果之前有肯定是我傻了
类似于POJ Lake Couting 和 蓝桥杯2018比赛的一个湖的题
//暑期练习27红与黑 计算连通区域 因为可以重复走?
#include <iostream>
using namespace std;
int m,n;
char map[25][25];
int count = 1;
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
void dfs(int x,int y)
{
for(int i=0;i<4;i++)
{
int nx = x+dx[i];
int ny = y+dy[i];
if(nx>=0&&nx<m&&ny>=0&&ny<n&&map[nx][ny]=='.')
{
map[nx][ny] = '#';
count++;
dfs(nx,ny);
}
}
}
int main(void)
{
while(1)
{
scanf("%d%d",&n,&m);
if(n==0&&m==0)
{
return 0;
}
for(int i=0;i<m;i++)
{
scanf("%s",map[i]);
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(map[i][j]=='@')
{
dfs(i,j);
}
}
}
printf("%d\n",count);
count = 1;
}
}