Oil Deposits HDU - 1241
思路:一道简单的Flood Fill,bfs和dfs都可以做,在这里寻找’@'然后枚举八个方向dfs的次数就是答案
具体代码如下
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 110;
int n, m;
char g[N][N];
void dfs(int x, int y){
g[x][y] = '*';
for(int i=-1; i<=1; ++i)
for(int j=-1; j<=1; ++j)
if(x+i >= 0 && x+i < n && y+j >= 0 && y+j < m && g[x+i][y+j] == '@')
dfs(x+i, y+j);
}
int main(){
while(scanf("%d%d", &n, &m) == 2){
if(!n || !m) break;
for(int i=0; i<n; ++i) scanf("%s", &g[i]);
int res = 0;
for(int i=0; i<n; ++i)
for(int j=0; j<m; ++j)
if(g[i][j] == '@'){
dfs(i, j);
res++;
}
printf("%d\n", res);
}
return 0;
}