首页 > 代码库 > 经典DFS问题 oilland 连通块

经典DFS问题 oilland 连通块

#include "iostream"#include "cstdio"using namespace std;int dir[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,-1},{-1,1},{1,1},{-1,-1}};int count,r,c;char map[100][100];void dfs(int x,int y)//深搜函数,参数为坐标(定位){    if(x<0||y<0||x>=r||y>=c)        return ;    else if(map[x][y]==@)    {        map[x][y]=.;     //如何标记已访问!        for(int i=0;i<8;i++)  //周围深搜        dfs(x+dir[i][0],y+dir[i][1]);    }    else        return;}int main(){    while(~scanf("%d%d",&r,&c)&&r&&c)    {        int i,j;        count=0;        for(i=0;i<r;i++)            scanf("%s",map[i]);//输入地图        for(i=0;i<r;i++)            for(j=0;j<c;j++)            {                if(map[i][j]==@)                  {                    count++;                    dfs(i,j);                  }            }            printf("%d\n",count);    }    return 0;}

 

经典DFS问题 oilland 连通块