UVA - 572 Oil Deposits

来源:互联网 发布:淘宝客推广数据分析 编辑:程序博客网 时间:2024/06/05 16:58

题目大意:求连在一起的油田有几块

解题思路:遍历表,将遍历过的油田设置为1,如果该地方没有油或者遍历过了,就return,反之,将它所在的地方的标记为1,表示已经已经探测过,然后再继续遍历下去

#include<cstdio>#include<cstring>int cur[200][200], vis[200][200];void bfs(int x, int y) {if(cur[x][y] == 0 || vis[x][y])//return ;vis[x][y] = 1;bfs(x-1,y-1);bfs(x-1,y);bfs(x-1,y+1);bfs(x,y-1);bfs(x,y+1);bfs(x+1,y-1);bfs(x+1,y);bfs(x+1,y+1);}int main() {int m, n;char str[200];while(scanf("%d %d",&n, &m) != EOF) {if(n == 0 && m == 0)break;int j = 1, count = 0;memset(cur,0,sizeof(cur));memset(vis,0,sizeof(vis));for(int i = 0; i < n; i++) {scanf("%s", str);//printf("%s\n",str);int len = strlen(str);for(int k = 1; k <=len; k++) {if(str[k - 1] == '@')cur[j][k] = 1;elsecur[j][k] = 0;}j++;}for(int i = 1; i <= n; i++) for(int k = 1; k <= m;k++) if(cur[i][k] && !vis[i][k]){count++;bfs(i,k);}printf("%d\n",count);}return 0;}

0 0