您的位置:首页 > 其它

poj 2386 Lake Counting (DFS~)

2012-05-28 18:08 435 查看
// 2012-05-28 水泡个数 p2386 dfs
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;
const int N = 105;

int map

;
int n, m;
int d_x[] = {-1, -1, -1, 0, 0, 1, 1, 1};
int d_y[] = {-1, 0, 1, -1, 1, -1, 0, 1};
bool ok(int x, int y) {
if(0 <= x < n && 0 <= y < m && map[x][y] == 1) return true;
return false;
}
void dfs(int a, int b) {
if(ok(a, b)) {
map[a][b] = 0;
for(int i = 0; i < 8; i++) {
dfs(a+d_x[i], b+d_y[i]);
}
}
}
int ans;
int main() {
int i, j, k;
char c, str
;
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++) {
scanf("%s", str);
for(j = 0; j < m; j++) {
if(str[j] == 'W') {
map[i][j] = 1;
}
else map[i][j] = 0;
}
}
ans = 0;
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) {
if(map[i][j]) {
dfs(i, j);
ans++;
}
}
}
printf("%d\n", ans);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  system c