题目地址:点击打开链接
C++代码:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
const int maxsize = 110;
string OD[maxsize];
int m,n;
int visited[maxsize][maxsize];
void dfs(int a,int b)
{
if(a>=0&&a<m&&b>=0&&b<n&&!visited[a][b]&&OD[a][b]=='@')
{
visited[a][b]=1;
dfs(a-1,b);
dfs(a+1,b);
dfs(a,b-1);
dfs(a,b+1);
dfs(a-1,b-1);
dfs(a-1,b+1);
dfs(a+1,b-1);
dfs(a+1,b+1);
}
}
int main()
{
while(cin>>m>>n&&m!=0)
{
for(int i=0;i<m;++i)
cin>>OD[i];
memset(visited,0,sizeof(visited));
int num=0;
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
{
if(!visited[i][j]&&OD[i][j]=='@')
{
dfs(i,j);
++num;
}
}
}
cout<<num<<endl;
}
return 0;
}