您的位置:首页 > 其它

hdu-1241-Oil Deposits

2014-05-03 10:57 288 查看
#include<stdio.h>

#include<string.h>

char a[102][102];

int m,n,b[102][102];

void dfs(int x,int y)

{

    if(!b[x+1][y]&&a[x+1][y]=='@'&&x+1<m)

    {

        b[x+1][y]=1;

        dfs(x+1,y);

    }

    if(!b[x-1][y]&&a[x-1][y]=='@'&&x-1>=0)

    {

        b[x-1][y]=1;

        dfs(x-1,y);

    }

    if(!b[x][y+1]&&a[x][y+1]=='@'&&y+1<n)

    {

        b[x][y+1]=1;

        dfs(x,y+1);

    }

    if(!b[x][y-1]&&a[x][y-1]=='@'&&y-1>=0)

    {

        b[x][y-1]=1;

        dfs(x,y-1);

    }

    if(!b[x-1][y-1]&&a[x-1][y-1]=='@'&&x-1>=0&&y-1>=0)

    {

        b[x-1][y-1]=1;

        dfs(x-1,y-1);

    }

    if(!b[x-1][y+1]&&a[x-1][y+1]=='@'&&x-1>=0&&y+1<n)

    {

        b[x-1][y+1]=1;

        dfs(x-1,y+1);

    }

    if(!b[x+1][y-1]&&a[x+1][y-1]=='@'&&x+1<m&&y-1>=0)

    {

        b[x+1][y-1]=1;

        dfs(x+1,y-1);

    }

    if(!b[x+1][y+1]&&a[x+1][y+1]=='@'&&x+1<m&&y+1<n)

    {

        b[x+1][y+1]=1;

        dfs(x+1,y+1);

    }

}

int main()

{

    int i,j;

    while(scanf("%d %d",&m,&n)&&m+n)

    {

        int sum=0;

        memset(b,0,sizeof(b));

        getchar();

        for(i=0;i<m;i++)

        {

   

            for(j=0;j<n;j++)

            scanf("%c",&a[i][j]);

            getchar();

        }

        for(i=0;i<m;i++)

        for(j=0;j<n;j++)

        if(a[i][j]=='@'&&!b[i][j])

        {

            sum++;

            b[i][j]=1;

            dfs(i,j);

        }

        printf("%d\n",sum);

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: