题目链接
Oil Deposits
代码如下
#include<bits/stdc++.h>
using namespace std;
int i,j,n,m;
const int M = 105;
int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,1},{1,-1},{-1,-1}};
char a[M][M];
void dfs(int si,int sj)
{
int di,dj;
for(int k=0;k<8;k++)
{
di=si+dir[k][0];
dj=sj+dir[k][1];
if(di>=1&&di<=m&&dj>=1&&dj<=n)
{
if(a[di][dj]=='@')
{
a[di][dj]='*';
dfs(di,dj);
}
}
}
}
int main()
{
while(cin>>m>>n)
{
int sum=0;
if(m==0&&n==0) break;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
cin>>a[i][j];
}
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]=='@')
{
sum++; a[i][j]='*';
dfs(i,j);
}
}
}
cout<<sum<<endl;
}
return 0;
}