#include <iostream>
#include <cstdio>
#include <cstring>
#define M 55
using namespace std;
char s[M][M];
int n, m, many;
int map[M][M];
int dfs(int i, int j){
map[i][j] = 1;
if(i+1<n&&s[i+1][j]=='@'&&map[i+1][j]==0){
dfs(i+1,j);
}
if(i-1>=0&&s[i-1][j]=='@'&&map[i-1][j]==0){
dfs(i-1,j);
}
if(j-1>=0&&s[i][j-1]=='@'&&map[i][j-1]==0){
dfs(i,j-1);
}
if(j+1<m&&s[i][j+1]=='@'&&map[i][j+1]==0){
dfs(i,j+1);
}
return 1;
}
int main()
{
while(scanf("%d%d", &n, &m)!=EOF){
many = 0;
memset(map, 0, sizeof(map));
for(int i = 0; i < n; i++){
scanf("%s", s[i]);
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(map[i][j] == 0 && s[i][j] == '@'){
many += dfs(i,j);
}
}
}
printf("%d\n", many);
}
return 0;
}
http://acm.hrbeu.edu.cn/index.php?act=problem&id=1001&cid=47
油田合并(dfs实现)
最新推荐文章于 2021-10-22 13:07:55 发布