题目链接:Oil Deposits
题目大意:#是油田,可以搜索八个方向能够到的#都是一块油田,问一共有几块油田
题目思路:dfs套路题,直接按照题目内容写就可以了
#include <bits/stdc++.h>
using namespace std;
int n,m;
char mp[105][105];
int dir[8][2] = {{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
bool vis[105][105];
int check(int x,int y){
if(x >= 0&&x < n&&y < m&&y >= 0&&!vis[x][y]) return true;
return false;
}
void dfs(int x,int y){
int xx,yy;
if(!check(x,y)) return ;
vis[x][y] = true;
for(int i = 0;i < 8;i++){
xx = x + dir[i][0];
yy = y + dir[i][1];
if(mp[xx][yy] == '@')
dfs(xx,yy);
}
}
int main(){
while(~scanf("%d%d",&n,&m)&&n+m){
for(int i = 0;i < n;i++)
for(int j = 0;j < m;j++)
cin>>mp[i][j],vis[i][j] = false;
int count = 0;
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
if(mp[i][j] == '@'&&!vis[i][j])
dfs(i,j),count++;
}
}
printf("%d\n",count);
}
return 0;
}