HDU-1241:Oil Deposits

来源:互联网 发布:怎么用网络呼叫电话 编辑:程序博客网 时间:2024/05/16 19:46
//DFS#include<stdio.h>#include<string.h>#define N 105char mp[N][N];int vis[N][N];int m,n,cnt;int dir[8][2] = {{-1,-1},{-1,0},{-1,1},//八个方向{0,-1},{0,1},{1,-1},{1,0},{1,1}};void DFS(int x,int y){vis[x][y] = 1;mp[x][y] = '*';int i,dx,dy;for(i=0;i<8;i++)//对周围的八个方向探索{dx = x+dir[i][0];dy = y+dir[i][1];if (dx>=0 && dx<m && dy>=0 && dy<n && mp[dx][dy]=='@')DFS(dx,dy);}}int main(){int i,j;int oil;while(scanf("%d%d",&m,&n)!=EOF && m!=0){getchar();oil = 0;for(i=0;i<m;i++){scanf("%s",mp[i]);getchar();}cnt = 0;memset(vis,0,sizeof(vis));for(i=0;i<m;i++)for(j=0;j<n;j++)if (!vis[i][j] && mp[i][j]=='@')//找到一个则调用DFS{cnt++;DFS(i,j);}printf("%d\n",cnt);}return 0;}

原创粉丝点击