(DFS)hdoj1241-Oil Deposit

#include<cstdio>
char a[101][101];
int m,n,dir[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}},cnt;
void dfs(int x,int y)
{
    a[x][y]='*';
    for(int i=0;i<8;i++)
    {
        if(x+dir[i][0]<0||x+dir[i][0]>=m||y+dir[i][1]<0||y+dir[i][1]>=n)
            continue;
        if(a[x+dir[i][0]][y+dir[i][1]]=='@')
            dfs(x+dir[i][0],y+dir[i][1]);
    }
}
int main()
{
    while(scanf("%d%d",&m,&n))
    {
        cnt=0;
        if(m==0)
            break;
        for(int i=0;i<m;i++)
        {
            scanf("%s",a[i]);
        }
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(a[i][j]=='@')
                {
                    cnt++;
                    dfs(i,j);
                }
            }
        }
        printf("%d\n",cnt);
    }
}

 

posted @ 2016-11-02 10:53  perplex  阅读(149)  评论(0编辑  收藏  举报